1、服务器端接收数据
1)向服务器端发送16进制数据:3A 0B 12
2)服务器端接收数据为:
未转化打印出来为:b':\x0b\x12' ,格式为字节流 #打打印时3A对应ASCII表中的冒号:。总结为当没有进行转换时,编译器会根据接收到的十六进制的数据对照ASCII表进行转换显示,ASCII表中没有对应字符的,显示实际十六进制,因此不要误认为接收数据出错。
转换:通过将接收到的数据进行16进制转换,即可得到与发送相一致的内容,格式为字符串
2、服务器端发送数据
1)服务器端发送
服务器端发送数据时,只能以二进制流的形式发送
2)客户端接收(用网络调试助手)
客户端以十六进制接收时:会将接收到的数据以单个字符为一字节,将其转换成ASCII表中对应的十进制进行显示
客户端不以十六进制接收时:会将接收到的以ASCII符号的形式显示
3)PLC接收数据16进制的数据
3.1)PLC接收转化机制:会将接收到的数据字节流以一个字节为单位将其中的内容看成一个字符,根据ASCII表转换成字符对应的16进制的数据
当服务器发送一个3给PLC时(
conn.send(b"3")
)PLC会将接收到的转换为3在ASCII的16进制值,即将接收到的字节流以单个字符转成对应的16进制显示
3.2)将数据组成字节流发送给PLC
#将列表数据数据组成字节流
def dataSwitch(array_data):
bytes_data = bytes()
for i in range(len(array_data)):
bytes_data += struct.pack('B', array_data[i])
return bytes_data
版权归原作者 LAPLAInc 所有, 如有侵权,请联系我们删除。