打印

物联网大大们,请给予关于Linux读取串口的问题做些指点

[复制链接]
584|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zbybass|  楼主 | 2017-3-22 17:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最初使用了openwrt的路由器,后来发现这个东东能和单片机串口能通讯
于是乎我就开始折腾起来了,偶这个学机械的人单片机很烂,但是却有一种说不出的喜欢这方面的爱好。
申报了这么个关于物联网的课题,用的乐联网的平台,单片机用的51,路由用的db120。还有一个来月的时间,现在遇到的这么个困惑。
单片机用ttl转usb连接,这是STC的串口助手作为上位机,发送aaa后,单片机返回温度值,在这里倒是没什么问题(如图)

,但是单片机和路由器连接上就出现读数不全的情况(见下图)

读数2度,但偶尔有读准的时候。底下平的时候是两度。
路由端是这样操作的,在root目录下新建了两个文件,a文件和lelian.sh文件,权限0777,a文件主要
sh脚本里写的是这个   
#! /bin/sh
Y_Name='你的传感器标识'   #设置对应乐联网上传感器的标号
Y_key='你的key'                  #填上自己的key
WG='com/api/V1/Gateway/UpdateSensors/01'   #乐联的网关地址,这里是第一个
echo "aaa" > /dev/ttyS1        #在串口里发aaa字符
cat /dev/ttyS1 > /root/a & { sleep 6 ; eval 'kill -9 $!' &> /dev/null ; }    #cat命令这个可以获取串口输入,但是向右的这个箭头> 和后面的  /root/a & { sleep 6 ; eval 'kill -9 $!' &> /dev/null ; }  干嘛用的不清楚这是
read Va < /root/a                 #用的read函数把a文件的数写到Va中了
curl --request POST $WG --data "[{\"Name\":\"$Y_Name\",\"Value\":\"$Va\"}]" --header "userkey:$Y_key" #用curl命令发送出去了
串口的波特率都设置好了用的9600,用Linux crontab        设置定时时间*/1 * * * * /root/lelian.sh 一分钟执行一次。测试了下,就出现我刚才的情况,读数会读不全。
我试着把 { sleep 6 ; eval 'kill -9 $!' &> /dev/null ; }中的sleep 6该成了9,以为能增加延时时间,但还是不行,
那么我应该在openwrt的脚本里做修改,还是改单片机的程序有了问题呢,恳请赐教。
如果您有更好的方案,我倒是很想学习一下的,并打赏酬劳哈。。。arduino方案看过,其他方案……我现在真的没底了,,,,


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

14

帖子

0

粉丝