gpt4 book ai didi

c# - 通过 UDP 连接在 C# 中读取此 C++ 编码数据

转载 作者:行者123 更新时间:2023-11-28 08:07:19 27 4
gpt4 key购买 nike

此结构化数据正在通过 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++ 和编码,非常感谢任何帮助。

最佳答案

您需要使用等效的 .net 类型在 C# 中创建类似的结构。您还需要按如下方式装饰您的 C# 结构。确保顺序与 c++ 结构中的顺序相同,因为您需要确保内存布局相同。

[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 的一些帮助。 Link

如果您还有问题,请告诉我。

关于c# - 通过 UDP 连接在 C# 中读取此 C++ 编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10049913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com