linux串口发送指令(write),一条指令的字节之间不连续,如何

2020-02-11 09:56发布

imx6与工控机232通讯;
arm 向工控机发送一条指令类似如下:
伪代码:
        cmd[15] = {01,02,03,04,05,06,07,08,09,10,11,12,13,14,15};
        ret = write(uart_fd,cmd,15);
函数执行完,ret 为15,证明write发送成功;

但是工控机接收的这条指令不连续,用串口监控工具捕获显示:01~14 连续接收,经过几毫米之后才接收到15;
(波特率为115200,字节之间的间隔应该不会超过1ms)

怀疑是不是arm发送的不连续,write先一次发送了14个字节,然后又发送最后一个字节数据15,造成工控接收不连续;
是不是串口缓冲区大小为14个字节,多了需要分多次发送?
缓冲区大小可以设置吗?

网上找的一篇 写的不是太详细  http://blog.csdn.net/sno_guo/article/details/17799739

QQ截图20160930140712.png (36.66 KB, 下载次数: 0) 下载附件 2016-9-30 13:58 上传

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
rom
1楼-- · 2020-02-11 11:41
刚脆一个字节一个字节发?
MiniCat
2楼-- · 2020-02-11 14:38
应该是linux的问题,发送进程可能被其它进程中断,另外写数据只是写给了驱动层,驱动层如何往外发,你并不知道。
NJ8888
3楼-- · 2020-02-11 18:37
 精彩回答 2  元偷偷看……
fchen2
4楼-- · 2020-02-11 21:33
Linux,应用把数据传递给驱动,驱动由内核控制发送。分包很常见。极端时有单个字节发送情况
duxingkei
5楼-- · 2020-02-12 00:20
控制板应该要有 接收超时机制,超过多少MS后才认为上位机发送超时,清空数据,重新接收数据包

gongxd
6楼-- · 2020-02-12 02:38
windows linux都很正常啊,操作系统的就这样,自定通信协议就行

一周热门 更多>