首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何发送十六进制数据?

如何发送十六进制数据?
EN

Stack Overflow用户
提问于 2010-06-30 11:54:43
回答 2查看 899关注 0票数 1

我正在尝试通过modbusTCP或modbus串行与modbus从站通信。手册。(partlow)有一本ASCII码通信手册(http://www.partlow.com/uploadedFiles/Downloads/1160%20ASCII%20Comms%20Manual.pdf),看起来与标准通信方法(http://en.wikipedia.org/wiki/Modbus)不同。许多现有的代码被设置为使用线圈的正常modbus寻址等等,这似乎(至少在我看来)与这些家伙不同。

那么,通过ruby或perl,我如何发送十六进制数据呢?我可能什么都做得很好,但是,如果我把"0DFA“写到一个串口...这样可以吗?或者我需要先将它转换成一个较低的层,或者以某种方式表示它?

我在这方面做了很多工作,可能把自己搞混了(让事情比他们更复杂),但是,我正在尝试与这个仪表建立通信,我可以看到TX活动指示灯闪烁,但没有RX,这意味着我的数据格式是错误的……

我主要从事这方面的工作(以及一些perl片段,试图找到一些有用的东西):http://www.messen-und-deuten.de/modbus.html

我通过终端服务器进行通信,该服务器接受modbusTCP (此脚本使用它),但我在将通信手册中的内容应用于上面的代码时遇到了问题,无法正确格式化数据包。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-30 15:39:08

你是在说原始数据吗?有几种方法,包括

代码语言:javascript
运行
复制
print HANDLE "\x{OD}\x{FA}";

printf HANDLE "%c%c", 0x0D, 0xFA;

print HANDLE "\015\372";       # octal notation

print HANDLE pack("C*", 0x0D, 0xFA);

syswrite HANDLE, "\x{OD}\x{FA}", 2;
票数 3
EN

Stack Overflow用户

发布于 2010-08-08 07:57:38

我建议您查看Ruby库,以帮助处理在RModBus语言内部通过TCP/IP形成数据包的一些错综复杂的问题。

你与之通信的设备总是有可能需要,或者相反,避免使用modicon符号。当我第一次尝试从PLC读取寄存器时,这是一个小问题。我发现Modbus的另一个“陷阱”是,一些寻址系统由于其实现中的奇特之处而偏移了一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3146364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档