上位机

地图

实时显示,新建线程,每五秒刷新一次,用Matplotlib画图,不过Matplotlib这个是第三方库,见这里写链接内容

这里提供了百度地图api这里写链接内容

我要用百度的地图,所以,我先去百度注册了开发者,
但是有很多不足。先不考虑。

谷歌地图也可以用,但是在puthon测试的时候,出错,估计是被屏蔽了。

python

上位机语言用python,安装完之后,要安装pyserial,用来进行串口通信,有一个小问题,解决在这里这里写链接内容
就是write的时候有错误,需要转码。

#!/usr/bin/env python
# -*- coding: utf-8 -*

import serial


t = serial.Serial('com1',9600)  
n = t.write('you are my world'.encode('utf-8'))

str = t.read(3)
print(str)

n = t.write('wangtaonice'.encode('utf-8'))

以上就是串口测试程序。有读有写。一定要注意编码问题。
问题是read的时候,程序会等待,知道这句话满足条件,才进行下一句,因此,有必要考虑多进程或多线程。这里是一个例子:这里写链接内容
这个帖子有界面的东西:这里写链接内容
以下为上面引用的:
我用的是“线程轮寻”方式。
就是打开串口后,启动一个线程来监听串口数据的进入,有数据时,就做数据的处理(也可以发送一个事件,并携带接收到的数据)。 我没有用到串口处理太深的东西。

python文件路径不要有中文,否则会出现各种莫名其妙的错误

数据

json是一种轻量级数据结构,arduino支持,python也支持,因此,将之选为信息传输的方案。参见:这里写链接内容
一个更好的讨论区:这里写链接内容
python中json解析文件的很好示例:这里写链接内容
主要代码如下:

#!/usr/bin/python
import json
#Function:Analyze json script
#Json is a script can descript data structure as xml, 
#for detail, please refer to "http://json.org/json-zh.html".

#Note:
#1.Also, if you write json script from python,
#you should use dump instead of load. pleaser refer to "help(json)".

#json file:
#The file content of temp.json is:
#{
# "name":"00_sample_case1",
# "description":"an example."
#}
#f = file("temp.json");
#s = json.load(f)
#print s
#f.close

#json string:
s = json.loads('{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}')
print s
print s.keys()
print s["name"]
print s["type"]["name"]
print s["type"]["parameter"][1]

可以看出,结构化非常利于输出数据。
那么,问题来了,如何从串口的数据组装json数据?
ajson的github网址这里写链接内容
ajson库的加入非常简单,从github下载完zip文件之后,在arduino的菜单里加载库即可,不需要解压。

上位机程序集成

现在,首先用虚拟串口工具虚拟出多对串口,然后通过python接收数传的数据,通过虚拟出来的串口将数据发到不同的程序,比如jy901自带的显示程序,上面的三维显示不错,还有各数据显示,是个不错的工具。
这种用python+虚拟串口方法,实验还是可以的。
问题是,速度。
下一步设想建立线程来解决。

代码

python串口输出16进制
可以参见:这里写链接内容

json的处理:这里写链接内容

python语言最常见的括号有三种,分别是:小括号( )、中括号[ ]和大括号也叫做花括号{ }。其作用也各不相同,分别用来代表不同的python基本内置数据类型。
1、python中的小括号( ):代表tuple元组数据类型,元组是一种不可变序列。创建方法很简单,大多时候都是用小括号括起来的。

tup = (1,2,3)
tup
(1, 2, 3)

()#空元组
()

55,#一个值的元组
(55,)

2、python中的中括号[ ]:代表list列表数据类型,列表是一种可变的序列。其创建方法即简单又特别,像下面一样:

list(‘python’)
[‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]

3、python大括号{ }花括号:代表dict字典数据类型,字典是由键对值组组成。冒号’:’分开键和值,逗号’,’隔开组。用大括号创建的方法如下:

dic={‘jon’:’boy’,’lili’:’girl’}
dic
{‘lili’: ‘girl’, ‘jon’: ‘boy’}

json的key和值一定要用双引号包起来(数值除外),json字符串最外面用单引号:

'{"wife":"wang","baby":22}'

python 串口

这里有arduino跟pc python通信的例子:
这里写链接内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值