Linux下写串口操作,对每次发送的数据要分多次写,不能一次写完,敬请高手赐教

BlackPoint 2005-10-17 03:40:00
我发送了120多字节的数据到串口,linux系统需要10秒左右才能发送完毕(分批发送,每次8-16个字节左右),导致接收串口数据的设备认为发送的数据有问题,请高手指点,如何设置串口参数或用什么办法能无延时的让linux立刻发完所有的数据?
...全文
1483 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlackPoint 2005-10-20
  • 打赏
  • 举报
回复
搞定结贴,原来是中断设置冲突,但linux也太夸张了吧,中断冲突居然能工作,只是速度慢些,不知道这个是强还是弱?,哈哈不过总算是涨见识了。
BlackPoint 2005-10-19
  • 打赏
  • 举报
回复
波特率如果不正确收到的数据应该不正确,我在windows下用超级终端选择串口登陆linux,发现登陆速度一样慢的惊人,而且是一顿一顿的。
rabbitweng 2005-10-19
  • 打赏
  • 举报
回复
先用cat /dev/ttyS0看看串口设置,如果设置和预想的不一致,可以用stty命令设置(如:stty ispeed 9600 ospeed 9600 -F /dev/ttyS0)
gongdath 2005-10-19
  • 打赏
  • 举报
回复
linux下串口的波特率设置可能不正确(个人意见)。120个字节,乘11也到不了1500,怎么会在9600波特时传10秒?
rabbitweng 2005-10-18
  • 打赏
  • 举报
回复
严重怀疑你在linux下串口的波特率设置是否正确
BlackPoint 2005-10-18
  • 打赏
  • 举报
回复
我用串口大师监视分别监视从linux和windows(同一台机器双操作系统)上发送过来的同样多的数据结果是:从串口大师上看收到linux发送过来120字节的数据要6-10秒(分批收到,每次16个字节),windows发送同样多的数据只要不到1秒(可能太快所以看到是一次发过来的)。
YanDong_8212 2005-10-18
  • 打赏
  • 举报
回复
我怀疑是不是你的串口有问题,你说的很慢是要多久?
BlackPoint 2005-10-17
  • 打赏
  • 举报
回复
程序上写操作就这一句话:BytesSent = write( ComAddr, (unsigned char*)send_buf, lenth+5 );
我在写操作的两边加过时间语句,瞬间快就执行完了,但串口实际发送数据却需要很久(用windows下的串监听串口)。
BlackPoint 2005-10-17
  • 打赏
  • 举报
回复
那个参数没用,我甚至试过直接写文件/dev/ttyS0,都是一样的慢,有没有人知道能不能和怎么直接在linux下直接读写串口?
yyy790601 2005-10-17
  • 打赏
  • 举报
回复
记得读串口时加个
options.c_cc[VMIN]=120;
就可以了。写串口没试过,不知道行不行?
xupingle 2005-10-17
  • 打赏
  • 举报
回复
不可能会有你所说的那么慢吧?是不是程序上有什么问题?
BlackPoint 2005-10-17
  • 打赏
  • 举报
回复
波特率是9600(固定的)
BlackPoint 2005-10-17
  • 打赏
  • 举报
回复
郁闷的是,我们读串口的设备是固有的没发改的,当串口发送速度太慢(分批发送),设备会认为发送过来的数据是不正确的!
ckc 2005-10-17
  • 打赏
  • 举报
回复
是不是波特率太低?
比如300bps的话每秒也就20多字节
YanDong_8212 2005-10-17
  • 打赏
  • 举报
回复
它发不完就发不完,应该不能加参数吧。
我们做的时候,都是加了个sleep()来处理,这也没什么不妥当啊?

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧