代码功能说明:1.向串口助手发送十六进制数据:0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A;

       2.用串口助手向代码发送数据,并将发送过来的数据保存在数据库中,按数据和保存数据形式保存到数据库中。

代码如下:

import serial,pymysql,threading,time
x=serial.Serial('com1',9600,timeout=1)
def faSong(): # 发送函数
while True: # 循环发送数据
time.sleep(3) # 设置发送间隔时间
myinput=bytes([0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A]) # 需要发送的十六进制数据
x.write(myinput) # 用write函数向串口发送数据 def jieShou(): # 接收函数
while True: # 循环接收数据
while x.inWaiting()>0: # 当接收缓冲区中的数据不为零时,执行下面的代码
myout=x.read(7) # 提取接收缓冲区中的前7个字节数
print(myout.decode('gbk'))
# 以下是用到三目运算符、map函数和lambda函数,
# 代码作用是将接收到的数据每一个转换成十六进制,中间用/x分割,便于后面分割
datas=''.join(map(lambda x:('/x' if len(hex(x))>=4 else '/x0')+hex(x)[2:],myout))
print(datas)
new_datas=datas[2:].split('/x') # 由于datas变量中的数据前两个是/x,所以用到切片工具
need=''.join(new_datas) # 将前面的列表中的数据连接起来
saveSql(need) def saveSql(a): # 保存接收的数据
# time.time返回当前时间的时间戳,即1234892919.655932这种类型
sql = "INSERT INTO VOC_DATA(value,create_time) VALUES (" + str(a) + "," + str(int(time.time())) + ")"
cursor.execute(sql)
db.commit()
x.flushInput() if __name__ == '__main__':
# 打开数据库连接
db=pymysql.connect(host='localhost', user='root', password='root',
database='xwl_test', port=3306, )
# 使用sursor()方法创建一个游标对象cursor
cursor=db.cursor()
t1=threading.Thread(target=jieShou)  # 创建一个线程1:不断的去请求数据
t2=threading.Thread(target=faSong)  # 创建一个线程2:不断的去发送数据
t2.start()  # 开启线程2
t1.start()  # 开启线程1

完成上面代码后运行:

以上就完成了本代码的运行操作。

如有问题,可关注微信公众号进行咨询!

31.用python中的serial向串口发送和接收数据(案例一)的更多相关文章

  1. 纠错:基于FPGA串口发送彩色图片数据至VGA显示

    今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...

  2. 第8.31节 Python中使用__delattr__清除属性数据

    一. 引言 在前面几节我们介绍了__ getattribute__方法和__setattr__方法,分别实现了实例属性的查询和修改(含定义即新增),作为Python中数据操作必不可少的三剑客get.s ...

  3. 在python中如何比较两个float类型的数据是否相等

    奇怪的现象 前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情.比方说,0.1+0.2得到的结果竟然不是0.3? >>> 0.1+0.2 0.300000000000000 ...

  4. STM32Cube IDE配置串口发送与接收

    此项目源码下载地址:https://github.com/lizhiqiang0204/STM32CubeIDE_Uart 串口与中断配置如下 在生成的main函数中,添加开启串口接收中断 HAL_I ...

  5. TCP程序中发送和接收数据

    这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节.这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN ...

  6. 【转】QT 串口QSerialPort + 解决接收数据不完整问题

    类:QSerialPort 例程:Examples\Qt-5.9.1\serialport\terminal,该例子完美展示了qt串口收发过程,直接在这上面修改就可以得到自己的串口软件.核心方法 // ...

  7. 单片机C51串口发送、接收寄存器

    所以,发送和接收寄存器可使用同一地址,编写验证程序(发送和接收是独立空间):读取一个数(1)->发送一个数(2)->再读取得1则是独立空间 不知道STM32串口寄存器和C51串口寄存器是否 ...

  8. Python中从SQL型数据库读写dataframe型数据

    Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sq ...

  9. Python中模块、类、函数、实例调用案例

    19 a = '我是模块中的变量a' 20 21 def hi(): 22 a = '我是函数里的变量a' 23 print('函数"hi"已经运行!') 24 25 class ...

随机推荐

  1. oracle自动选择索引

    如果表中有两个以上(包括两个)索引,其中有一个唯一性索引,而其他是非唯一性. 在这种情况下,ORACLE将使用唯一性索引而完全忽略非唯一性索引. 举例: SELECT ENAME FROM EMP W ...

  2. JavaScript中判断整数的方法

    一.使用取余运算符判断 任何整数都会被1整除,即余数是0.利用这个规则来判断是否是整数. 1 2 3 4 5 function isInteger(obj) {     return obj%1 == ...

  3. uni-app学习记录06-Vuex简单使用

    import Vue from 'vue' // 这里引入vuex import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Stor ...

  4. H3C 启动包过滤防火墙功能

  5. 漏洞扫描工具AWVS介绍及安装教程

    PS:webug靶场全都通关了,你也就是个合格的新手了. 上次我们在通关webug靶场第三关的时候,提到一个漏洞扫描工具叫做AWVS.这次我们介绍一下它. 1 AWVS漏洞扫描工具 Acunetix ...

  6. linux /proc 接口

    无论何时一个硬件中断到达处理器, 一个内部的计数器递增, 提供了一个方法来检查设备 是否如希望地工作. 报告的中断显示在 /proc/interrupts. 下面的快照取自一个双处理 器 Pentiu ...

  7. 【t088】倒水

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 一天辰辰买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着辰辰发现瓶子实在太多了,于是 ...

  8. Github上的英文解释

    1.AFAIK: As far as I know.  据我所知 2.SPOF: Single point of failure. 单节点崩溃 3.ASAP: As soon as possible. ...

  9. ZR提高失恋测2(9.7)

    ZR提高失恋测2(9.7) 网址http://www.zhengruioi.com/contest/392 版权原因,不放题面 A 首先,我们发现对于匹配串\(s\)中所有满足\(s_i \not = ...

  10. Destoon系统目录树SEO属性目录开发实例

    如何在destoon里设置树形目录结构的SEO优化方式官方给的SEO伪静态实例是没有这个方式的 楼主后来想了一下,就干脆自己做一个吧,已经测试完全无误通过,特意分享给大家 目前比如sell模块下类别[ ...