2

我目前正在从事一个需要与微硬蜂窝调制解调器 IPn3G 通信的项目。我将调制解调器设置为通过 TCP 向我的计算机发送消息,我可以在套接字中接收消息。

消息看起来像这样:

���������DKReadyCANRogersWirelessInc. Home354626030393530302720391029547

现在,我可以识别其中的一些字段,例如 Status 或 Carrierinfo 以及最后的 imei 和 imsi。

我的问题是,我如何解析看起来很有趣的东西?我尝试过 struct,但它似乎对我没有多大帮助。

在调制解调器的文档中,我只发现了这个:

modem_event 消息结构:

  • 固定标头(固定大小 20 字节)
  • 调制解调器 ID(uint64_t(8 字节))
  • 消息类型掩码(uint8_t(1 字节))
  • 预订的
  • 数据包长度(uint16_t(2 字节)) 注意:数据包长度 = 固定报头长度 + 消息负载长度。

承运人信息:

  • 内容长度 2 BYTES (UINT16_T)
  • RSSI 1 字节 (UINT8_T)
  • 射频频段 2 字节 (UINT16_T)
  • 服务类型 STRING(1-30 字节)
  • 通道号 STRING(1-30 字节)
  • SIM 卡号 STRING(1-30 字节)
  • 电话号码 STRING(1-30 个字节)

对我来说,这条信息似乎与它应该是什么不一致。如果有人对如何解决这个问题提出建议,我将非常高兴。

谢谢

4

1 回答 1

0

Python 有很棒的struct模块,它允许你打包和解包二进制数据。

我明白了,您已经尝试过使用它。对于您的设备,我没有文档(去检查一下!),但我可以假设,字符串是空终止的(它们之前没有给出它们的大小)。

获取消息的字符串部分的大小(从其他字段的大小和数据包长度)并将所有字符串读入一个 Python 字符串,并使用<number>s并拆分它们以找到空字符。

于 2012-04-27T22:49:25.243 回答