我想向modbus / tcp设备发送一些数据包来控制它。 我在python中取得了如下成功:
sdata = struct.pack('BBBBBBBBBBBBBBB',0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x10,0x00,0x08,0x00,0x01,0x02,0x00,0x01)
sock.send(sdata)
效果很好;
但现在我不知道如何在Autoit中这样做。
我尝试这样做:
$szData = Binary("0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x10,0x00,0x08,0x00,0x01,0x02,0x00,0x01");
TCPSend($ConnectedSocket, $szData)
但这不像上面的python源一样工作。
答案 0 :(得分:2)
AutoIt不是Python。 AutoIt二进制函数与Python中的struct.pack不同。 AutoIt期望输入如下:
$szData = Binary("0x000000000009011000080001020001")
如果你仍然想输入这样的数据:“0x00,0x00,0x00,0x00”那么你将不得不发明自己的二进制函数。一个简单的“黑客”是:
Func _Binary($s)
$b = StringReplace($s, ",0x", "") ; Replaces ,0x with empty string
Return Binary($b)
EndFunc