2011-04-12 22 views
0

私はそれを制御するためにいくつかのパケットをmodbus/tcpデバイスに送信したいと思います。 私は次のようにPythonでの成功を実行します。AutoItでパケットを送信するにはどうすればいいですか?

sdata = struct.pack('BBBBBBBBBBBBBBB',0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x10,0x00,0x08,0x00,0x01,0x02,0x00,0x01) 
sock.send(sdata) 

そして、それはうまく動作します。

しかし、今私はオートイットでこのようにする方法がわかりません。

私はこのようにやろう:

$szData = Binary("0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x10,0x00,0x08,0x00,0x01,0x02,0x00,0x01"); 
TCPSend($ConnectedSocket, $szData) 

しかし、これは、Pythonのソース上記のように動作しません。

+0

TCPSend()の後の@errorの値は何ですか? Windowsソケットエラーコードの一覧は次のとおりです。http://msdn.microsoft.com/en-us/library/ms740668(VS.85).aspx – JohnForDummies

答えて

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 
関連する問題