我有一个ND-6021模拟输入模块。它是一种RS-485设备,可以根据接收到的命令设置可变的输出电压。我正试图使它在Linux扩展下工作。我一直在使用minicom查看它是否正常工作,所以我发出了一个read configuration命令:$012。设备使用消息!01320600:!回答,意味着它正确地接收了命令,其余的消息解释了如何配置它。据我所知,这意味着连接的设置是正确的,并且没有硬件问题阻碍通信。
下一步是设置所需的输出电压水平。我把一个数字电压表连接到设备上,这样我就可以看到输出电压了。我发出命令:#0108.467和我应该在电压表上读取一个值为8.467伏特的电压,设备应该用>来响应,但是电压保持在0,设备没有答案。
我花了几个小时检查命令的语法,它是正确的,所以我做了另一个测试。我将设备连接到Windows膝上型电脑,并使用白蚁发出了完全相同的命令。读取配置命令($012)工作,我得到了与Linux相同的答案,现在也是设置电压命令:我从设备获得了>答案,输出电压被正确设置。
我很困惑,因为我的测试表明通信和硬件设置都是正常的,但是很明显,有些东西不起作用,但又是什么呢?
发布于 2018-09-12 16:44:11
通常情况下,这是一个粗俗或新的解释问题。(即使命令部分工作)
索纳特是建立和排除网络和串行连接的重要工具。
socat - /dev/ttySX[,params]如果空参数无效,可以尝试使用param添加显式波特率:b 9600/b 19200/b 57600/b 115200.使用socat -?? | grep 'b[1-9]'检索的所有列表
然后重点讨论新的线解释问题,尝试将cr、crnl、echo=0和raw组合起来。
..。由于一些模块坚持cr+lf (\r\n)行的结尾,有些模块只想要'\n',有时回显会造成混乱.在您的例子中,模块只需要回车(\r),所以echo '#0108.467' | socat - /dev/ttySX,cr应该工作得很好。
https://unix.stackexchange.com/questions/468554
复制相似问题