-1

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 ソースのようには機能しません。

4

1 に答える 1

2

AutoIt は Python ではありません。AutoIt Binary 関数は、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
于 2011-04-12T14:44:41.750 に答える