[英]Reading this C++ Marshalled Data in C# over UDP connection
此結構化數據通過 UDP 連接發送。 我可以讀取 UDP 數據包,但我無法解析來自這個 C++ 結構的數據。
這是結構:
struct scanner_status{
// ---
u_short UDP_STATUS;
u_short TCP_COMMAND;
u_short TCP_LOGGING;
// scanner attributes
EPlatformModelNumber ModelNo;
string SerialNo;
bool bHasCT;
bool bHasPET;
bool bHasSPECT;
// physical
EBedType_mMM _eCurrBedType;
int_16 _CurrPallet;
bool _bTunnelPresent;
//
scanner_status()
: UDP_STATUS(u_short(~0))
, TCP_COMMAND(u_short(~0))
, TCP_LOGGING(u_short(~0))
, ModelNo(eUnknownPlatformModelNumber)
, bHasCT(false)
, bHasPET(false)
, bHasSPECT(false)
, _eCurrBedType(emMM_BedType_Unknown)
, _CurrPallet(-1)
, _bTunnelPresent(false)
{ }
};
decl_marshalling(scanner_status);
我想在 C# 閱讀這篇文章時獲得幫助,我對 C++ 和編組並不十分熟悉,非常感謝任何幫助。
您需要在 c# 中使用等效的 .net 類型創建類似的結構。 您還需要按如下方式裝飾 c# 結構。 確保順序與 c++ 結構中的順序相同,因為您需要確保 memory 布局相同。
[StructLayout(LayoutKind.Sequential)]
struct scanner_status{
// ---
[MarshalAs(UnmanagedType.U1)]
u_short UDP_STATUS;
[MarshalAs(UnmanagedType.U1)]
u_short TCP_COMMAND;
[MarshalAs(UnmanagedType.U1)]
u_short TCP_LOGGING;
這是 Microsoft 的一些幫助。 關聯
如果您還有問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.