关于使用openwrt读写arduino数据

在使用openwrt读取arduino数据的过程中,遇到了每次读取都会使arduino的板子重新打开串口,打开串口后就会重新进行重置,这个时候无法读取正确的传感器的数据。

代码如下:

<span style="font-size:18px;">#!/usr/bin/python
# -*- coding: utf-8 -*-

import cgi, os
import commands
import serial


#设置返回类型和编码
print """\
Content-Type: text/html;charset=utf-8\n
"""


mode = "";
form = cgi.FieldStorage() #获取POST数据
if form.has_key("mode"): #是否存在传送值
	mode = form['mode'].value #获取该值
	#print mode #打印显示
	#print "<br>" #换行


#如果是发送数据
if (mode == "alarmdata"):
	ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1) #读取ttyUSB0串口
	#ser.write("lABC")	#写入ttyUSB0串口

	sendcount=0
	while True:
		data=ser.readline() #读取一行 读取1个字符read(1)		
		print (data) #repr 打印出数据
		break #退出串口读取

	ser.close()</span>
如果用网页实时读取,就会发现数值并不是真实数值。

通过实验,我发现若是只打开一次串口,再进行读取就没有这个问题,所以我使用python一次打开串口,循环读取串口数据并写入txt文档中,然后使用js实时读取txt中的数值,只有这样才能正确读取arduino传回来的数值。


而使用openwrt写入arduino也有这个问题,主要问题还是串口打开的问题,需要一次打开串口后,循环写入才能写入正常数据。处理方法和上面一样,也是利用txt。


还有一个办法就是将这些个数据写入mysql数据库,再进行读写。不知道还有人遇到这个问题吗,您是怎么解决的,希望有更好的办法~~~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值