Как отправить пакет в AutoIt? - PullRequest
0 голосов
/ 12 апреля 2011

Я бы хотел отправить пакет на устройство 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.

Iпопробуйте сделать так:

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

Но это не работает, как указано выше в питоне.

1 Ответ

2 голосов
/ 12 апреля 2011

AutoIt не Python. Двоичная функция AutoIt не работает так же, как struct.pack в Python. AutoIt ожидает ввода, как это:

$szData = Binary("0x000000000009011000080001020001")

Если вы по-прежнему хотите вводить свои данные следующим образом: «0x00,0x00,0x00,0x00», вам придется придумать свою собственную двоичную функцию. Простой "взлом" это:

Func _Binary($s)
   $b = StringReplace($s, ",0x", "") ; Replaces ,0x with empty string
   Return Binary($b)
EndFunc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...