重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的这个串口设备在打开(也就是调用open函数获取设备描述符)的时候设置的是非阻塞方式。导致串口上没数据的时候read也立即返回,但是你的while已经把有效的数据读走了,if里面读到的一定是空的,所以什么也不打印。
创新互联服务项目包括聂拉木网站建设、聂拉木网站制作、聂拉木网页制作以及聂拉木网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,聂拉木网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到聂拉木省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
建议
1. 在打开串口设备时使用阻塞方式,不会设置的话查查open系统调用的帮助,它有个flag;
2. 把while循环内的if语句去掉。
这样写肯定会写死的啊..写(也就是串口发送数据)实际应用不会这么频繁的.楼主可以在写后加上一个sleep(1);这样就不会写死了..
高并发读写这样设计也是错误的应该用队列来处理..
首先你确定你那串口是否有东西可读? 就是你上面说的“一个文件不停的写数据到串口”!你可以先不这样读取,你可以在终端上用cat试试是否有数据可读:cat /dev/ttyS0
如果有的话,那你就检查串口设置是否正确,如波特率,数据位,停止位,校验位等!
最后就是你读取的函数了,看看先不要用printf打印字符串了,先看看十六进制是否有,然后再看字符等!
就是以上一些,你还可以参考Linux下串口文档,百度上很多的……
用echo可以,不过需要一个串口的软件,就跟win的超级终端一样,开启后连接串口,然后另一边发送数据,你这边就能显示出来,我记得好像叫做minicom