如何在AutoIt中发送数据包?

时间:2011-04-12 09:31:34

标签: autoit

我想向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源一样工作。

1 个答案:

答案 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
相关问题