【问题标题】:I need help to get data sent from an instrument via udp protocol我需要帮助才能通过 udp 协议从仪器发送数据
【发布时间】:2021-05-24 19:33:46
【问题描述】:

我有一个测量 so2 的仪器,我有一个标准程序,可以让我看到数据,但我需要将仪器连接到服务器并将所有数据发送到数据库。我用wireshark来看看它是如何与软件通信的,但我不明白用什么方法来制作我的程序。这里我有wireshark转储:

红色圆圈表示仪器所做的测量。 附言对不起我的英语不好

【问题讨论】:

  • 您是要编写自己的代码,还是想要第三方应用程序?在第一种情况下,什么编程语言?在第二个:Software Recommendations.
  • 我想编写自己的代码,我知道我正在考虑使用 python 或 java 或者 php,因为我每天都使用它们,但我从来没有做过这样的事情。我只为企业开发管理软件
  • 一旦你决定了你需要什么语言来弄清楚如何解析数据。看起来它使用标准ASCII codes\001SOH(标题开始)。 \002STX(文本开头)等。在那之后,我猜数据是逗号分隔的。或者查看您的设备是否有现有的库。
  • 所以我想用python,我不知道如何让我的电脑和仪器说话。我用套接字示例进行了测试,但没有任何结果。我知道程序会在每个连接上更改端口,但仪器始终是 53700。
  • 请添加您已有的任何代码。网络上有一百万个 UDP 客户端示例。 Python - UDP client

标签: sockets udp


【解决方案1】:

所以我解决了我即将展示的问题: 我做了一个听众和一个呼叫者;

来电者:

`from socket import socket, AF_INET, SOCK_DGRAM

SERVER_IP   = '192.168.1.99'
PORT_NUMBER = 53700
SIZE = 1024
print ("Test client sending packets to IP {0}, via port {1}\n".format(SERVER_IP, PORT_NUMBER))

mySocket = socket( AF_INET, SOCK_DGRAM )
mySocket.bind(('192.168.1.100', 57806))

while True:
    data = bytes.fromhex('014630303430335230303102313103')
    mySocket.sendto(data,(SERVER_IP,PORT_NUMBER))
    exit()`

听众:

`from socket import socket, gethostbyname, AF_INET, SOCK_DGRAM
import sys
PORT_NUMBER = 57806
SIZE = 1024

hostName = gethostbyname( '' )

mySocket = socket( AF_INET, SOCK_DGRAM )
mySocket.bind( (hostName, PORT_NUMBER) )

print ("Test server listening on port {0}\n".format(PORT_NUMBER))

while True:
        (data,addr) = mySocket.recvfrom(SIZE)
        print (data)
sys.ext()`

我在wireshark上看到,如果我发送一个从我已有的请求包中复制的请求包,仪器会给我回复;所以我在一个选择的端口上设置了一个监听器,现在我得到了所有的数据!

突出显示的数据包是我从调用者脚本发送的数据包。

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多