原文链接:https://dsx2016.com/?p=1441
公众号:大师兄2016

前言

前几篇文章仅仅是将获取到的温湿度数据打印在串口,简单的字符串就可以,只需要查看,未实现存储.

为了方便的将arduino的数据使用python存到数据库中,使用json数据是一个不错的方式.

此处设计的为arduino传输的为字符串json,python将字符串转码为字典后然后进行数据处理.

python字符转换

str转json

[dsx_def_highlightjs code=code]

# 引入json模块
import json
# 创建字符串json
str = '{"temperature":27,"humidity":85}'
# 解析为字典
j = json.loads(str)
# 打印数据
print(j)
# 打印数据类型
print(type(j))

[/dsx_def_highlightjs]

获取到的结果为

{'temperature': 27, 'humidity': 85}
<class 'dict'>

arduino发送字符串

arduino如何拼接字符串

+运算符允许你把字符串和另一个字符串,常量字符数组,ASCII,变量,或者常量字符等组合起来。

// 字符串拼接数字stringVal =  stringOne + 123;// 字符串拼接字符stringVal =  stringOne +  "abc";// 两个字符串变量拼接stringVal = stringOne + stringTwo;

arduino把温湿度拼接

参考代码注释

#include <dht11.h>
#define DHT11PIN 4dht11 DHT11;void setup()
{Serial.begin(9600);}void loop()
{Serial.println();// 初始化库int chk = DHT11.read(DHT11PIN);// 定义温度变量名String  temperature = ""temperature":";// 获取温度int temperatureNum=(float)DHT11.temperature;// 定义湿度变量名String  humidity = ""humidity":";// 获取湿度int humidityNum=(float)DHT11.humidity;// 拼接字符串jsonString dataRes="{"+temperature+temperatureNum+","+humidity+humidityNum+"}";// 打印到串口Serial.print(dataRes);// 延时2s执行delay(2000);}

python接收字符串

此处使用usb串口接收数据

注意,python接收到的为bytes字节符

b'{"temperature":28,"humidity":78}'

bytesstr方式

# 第一种
str(b'123', encoding='utf-8')
# 第二种
bytes.decode(b'123')

python处理arduino传来的温湿度数据

参考代码注释

# 引入串口库(注意是serial,不是pyserial)
import serial
# 引入json库
import json# 设置端口变量和值
serialPosrt = "COM3"
# 设置波特率变量和值
baudRate = 9600
# 设置超时时间,单位为s
timeout = 0.5
# 接受串口数据
ser = serial.Serial(serialPosrt, baudRate, timeout=timeout)# 循环获取数据(条件始终为真)
while 1:# 读取接收到的数据的第一行strData = ser.readline()# 把拿到的数据转为字符串(串口接收到的数据为bytes字符串类型,需要转码字符串类型)strJson = str(strData, encoding='utf-8')# 如果有数据,则进行json转换if strJson:# 只有当检测到字符串中含有温湿度字符名时才进行json转码,其他的字符串内容不作操作if "temperature" in strJson:print("当前接受到的数据位->", strJson)# 字符串转为json(每个字符串变量名必须为双引号包括,而不是单引号)jsonData = json.loads(strJson)print("转码成功,当前类型为->", type(jsonData))else:print("当前接收到的数据为空")

总结

本文描述了数据通信的数据预处理和数据转码

python期望接收json数据,而不是无序的字符串流

  • arduino的数据设置为字符串json格式(C/C++)
  • python将获取到的bytes字节符转为字符串(python)
  • python将字符串str转为json(字典)(python)

下期内容

  • 使用sqlite等数据库存储arduino的传感器数据

END.

9600波特率每秒传送多少字节_arduino传送字符串json到python解析为字典数据相关推荐

  1. 波特率9600每秒的传输字节_波特率、比特率、通信速度的区别01

    1.写在前面 I2C通信速度100KHz是什么意思? SPI数据传输速率最大150Mbps是什么意思? 串口9600bps每秒传输9600字节数据吗? 不少参加工作,甚至工作两三年的工程师,都没有搞明 ...

  2. 计算机数据传输9600波特率,波特率9600每秒的传输字节 传输一个字节要多久-与非网...

    波特率9600指的是每秒可以传输9600个二进制位,也就是9600/8个英文字母的数据量,也就是1200个字节,大约1.2KB. "波特"(Baud)本身已是速率,所以不需要写成 ...

  3. 计算机数据传输9600波特率,什么是波特率_波特率9600是什么意思_串口通信为什么要设置波特率?...

    波特率(Baud Rate) 单位 bps -- 每秒传送的字节数 Byte Per Second.. (BaudRate) 模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量.如果数据不压缩 ...

  4. 兆比特每秒和兆字节每秒_网速中的“KB”“MB”“s”等字母都是啥意思,读啥,比如兆这样?...

    1.这有啥不好意思的.... 2.可以匿名,如下: 3.网速的单位 b与B 计算机信息的基本单位是bit(比特),1 bit 就是背后的0或1, 8个bit是1字节 通常小写的b或bit代表比特,大写 ...

  5. C#中字节数组与字符串的来回转换

    C#中字节数组与字符串的来回转换会遇到一个奇怪的问题.这个问题是在做网络传送文件时遇到的. 问题如下: 就是把件流形成的字节数组转成字符串发送,对端接收到过后把字符串还原成字节数组然后形成文件流. 这 ...

  6. web简易计算器代码_30秒内便能学会的30个超实用Python代码片段

    许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...

  7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个...

    2019独角兽企业重金招聘Python工程师标准>>> 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如"我ABC ...

  8. 解决在C#(.net)按字节数截取字符串最后出现乱码的问题

    解决在C#(.net)按字节数截取字符串最后出现乱码的问题 参考文章: (1)解决在C#(.net)按字节数截取字符串最后出现乱码的问题 (2)https://www.cnblogs.com/xion ...

  9. 如何将零终止的字节数组转换为字符串?

    本文翻译自:How to convert a zero-terminated byte array to string? I need to read [100]byte to transfer a ...

最新文章

  1. python 模拟浏览器selenium 微信_Spider-Python爬虫之使用Selenium模拟浏览器行为
  2. 【转】mssql中大小写的区分
  3. 设计模式 - Iterator(迭代器)
  4. docker命令行解析以及如何向服务器端发送请求(docker源码学习一)
  5. [设计模式笔记]4.建造者模式
  6. Java Script 第十节课 Java Script的for循环练习。
  7. python自动化测试常用库_Python自动化测试常用库整理
  8. 【Spring学习笔记-MVC-17】Spring MVC之拦截器
  9. 2019年物联网发展趋势与预测分析
  10. 前端小白,如何快速提升自己?了解3点,找工作不用愁
  11. Hibernate批量处理数据、HQL连接查询
  12. linux mysql 数据恢复_怎样恢复Mysql数据库误删除后的数据
  13. 人工智能来了 微智全景首款刷脸支付终端亮相
  14. 英语语法——名词和名词性从句
  15. 你没见过的中文编程工具,用中文开发android安卓应用,安卓开发的初体验!
  16. win10如何显示html文件夹,Win10显示隐藏文件夹图标_Win10查看隐藏文件夹方法-192路由网...
  17. [HNOI2007]最小矩形覆盖(旋转卡壳)
  18. request.js?b775:43 Uncaught (in promise) Error: 抱歉,系统繁忙,请稍后重试! at __webpack_exports__.default (r
  19. (转)Unity3D手游开发实践
  20. adb shell 中查看文件大小指令 ls -al 和 du -k \ du-h

热门文章

  1. 服务器配置能连多少个小程序,每个服务器能配置多少小程序
  2. 深度搜索 java_java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法...
  3. php observer,php设计模式 Observer (观察者模式)
  4. 易语言下载别人的源码编译出来用不了_我是如何阅读源码的
  5. 1从控制台输入年份,判断是闰年还是平年;
  6. Java经纬度坐标与高斯坐标的转换
  7. Vue中引入css文件
  8. Python个 flask 教程地址 做个记录方便以后学习用
  9. 摩拜回应裁员传闻:属正常业务调整 部分岗位仍在招聘
  10. 数据科学入门的5个技巧