如何在 AutoIt 中发送数据包?

发布于 2024-11-01 02:01:53 字数 469 浏览 1 评论 0原文

我想发送一些数据包到 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 源代码那样工作。

I'd like to send a some packet to modbus/tcp device to control it.
I do success in python as follow:

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

And it works well;

But now I don't know how to do like this in Autoit.

I try to do like this:

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

But this does not work like above python source.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉城已无爱 2024-11-08 02:01:53

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

AutoIt is not Python. The AutoIt Binary function does not work the same as struct.pack in Python. AutoIt expects input like this:

$szData = Binary("0x000000000009011000080001020001")

If you still want to input your data like this: "0x00,0x00,0x00,0x00" then you will have to invent your own Binary function. A simple "hack" is:

Func _Binary($s)
   $b = StringReplace($s, ",0x", "") ; Replaces ,0x with empty string
   Return Binary($b)
EndFunc
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文