以文本方式查看主题

-  公司论坛  (https://emtronix.com/club/index.asp)
--  技术问答  (https://emtronix.com/club/list.asp?boardid=1)
----  [求助]  (https://emtronix.com/club/dispbbs.asp?boardid=1&id=4877)

--  作者:睡觉321
--  发布时间:2019-5-6 16:11:00
--  [求助]

请问一下,关于提供的串口通讯例程,源代码中打开的串口具体是哪一个?通过什么命令来打开串口?


--  作者:hzc
--  发布时间:2019-5-7 9:44:00
--  

你好,打开串口是通过源码中的open函数实现的,而具体打开哪一路串口,是通过open中的参数决定的。具体的说明请参考我们在光盘资料中提供的《英利Linux工控主板应用程序编程手册》。


--  作者:睡觉321
--  发布时间:2019-5-7 10:23:00
--  

图片点击可在新窗口打开查看

提供的例程中打开串口的就是这个open函数吗?


--  作者:hzc
--  发布时间:2019-5-7 13:13:00
--  

是的,这是linux打开设备文件的标准操作。


--  作者:睡觉321
--  发布时间:2019-5-7 14:27:00
--  串口通讯例程

我运行了提供的串口通讯例程,为什么隔一会就出现乱码了?前面的0x11是我发送的数据,后面从0x0开始就不是我发的了。为什么会这样呢?

图片点击可在新窗口打开查看


--  作者:x10
--  发布时间:2019-5-7 15:17:00
--  

请问用的是什么型号的主板,哪个串口?对端是什么设备,PC吗?


--  作者:睡觉321
--  发布时间:2019-5-7 15:58:00
--  

使用主板的EMS 3354 ,串口是COM5(RS485转USB与PC连接),对端是PC,PC机使用串口调试助手发送数据。


--  作者:hzc
--  发布时间:2019-5-7 17:33:00
--  

你好,我们提供的例程在收到数据后,会进行回发。

因为RS485是半双工的通讯方式,如果是使用的RS485进行通讯测试的话,需要把代码中的回发去掉,否则一收到数据就回发会造成RS485总线上的数据出现错误,所以打印信息也就不对了。


--  作者:睡觉321
--  发布时间:2019-5-7 21:04:00
--  

如果使用RS232的串口,那么在PC上收到的应该是31到39这几个数据吗?


--  作者:睡觉321
--  发布时间:2019-5-7 21:12:00
--  

回发的代码是下图这一个函数吗?

图片点击可在新窗口打开查看


--  作者:x10
--  发布时间:2019-5-7 22:28:00
--  

建议先用RS232全双工串口(ttyS1)做基本的代码测试,把代码搞清楚后,再转到半双工的RS485上,这样效率最高,节省时间。


--  作者:睡觉321
--  发布时间:2019-5-8 14:30:00
--  

好的,谢谢