我有一个连接到Interface Module的工业传感器,该传感器通过telnet向最终用户提供信息。
Telnet配置
港口:10001
数据格式:Little-Endian
数据payload

Preamble - 32 bit
Article number - 32 bit
Serial number - 32 bit
Channels - 64 bit
Status - 32 bit
Frame number M / - 16 bit/ 16 bit
bytes per frame
Measuring value counter - 32 bit
Measuring value frame 1 - N * 32 bit
..
..
TCP标头(如果我理解正确)(即有效负载)之后应该可以使用。
我正在尝试通过更多实际示例来学习golang,并且正在朝以下方向思考:
  • 创建一个TCP服务器以侦听传感器的接口模块IP和端口号
  • 提取有效负载并将其作为单独的参数(例如preamblearticle number等)打印出来,作为初学者的任务

  • 我浏览了一些有关TCP服务器/客户端创建的博客文章,但它们仅解决有效负载中的string。我如何提取如上所述的面向字节的自定义有效负载?
    附言
    我可以理解,这可以在python中通过struct.packstruct.unpack来实现,因此可以理解一些相关性,

    最佳答案

    在上方的链接pdf文档的6.2节中,有一个表格列出了您似乎在问题中列出的数据

    我会将该表转换为结构,然后使用encoding / binary模块将其读入。有关示例,请参见https://golang.org/pkg/encoding/binary/#example_Read

    “根据连接的传感器,所有测量值都将以Int32,Uint32或Float的形式传输”,可能最容易将它们转换为uint32,然后在以后进行转换

    关于go - 使用golang提取TCP有效负载中的自定义数据格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53428674/

    10-11 22:35