代码功能说明: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. postman 中post方式提交数据

    post方式提交数据时,把参数填写在body中而不是pOST下面的哪一行

  2. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  3. js如何获取地址栏上的参数id

    直接上js代码   方法1: 父页面跳转地址栏带id>>>>window.location.href='${ctxAdmin}/study/checkForm?id='+id+ ...

  4. jieba分词流程及部分源码解读(一)

    首先我们来看一下jieba分词的流程图: 结巴中文分词简介 1)支持三种分词模式: 精确模式:将句子最精确的分开,适合文本分析 全模式:句子中所有可以成词的词语都扫描出来,速度快,不能解决歧义 搜索引 ...

  5. hihocoder 1272 买零食

    #1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...

  6. MySQL中Index Merge简介

    索引合并优化 官网翻译 MySQL5.7文档 索引合并是为了减少几个范围(type中的range类型:range can be used when a key column is compared t ...

  7. 802.1X技术简介

  8. IDEA开发 工具IC和IU的区别

    现在很多人都在用IDEA开发工具,那么下载安装时会有ideaIU和ideaIC两个版本,到底该怎么选择呢? 首先: ideaIU:U代表的是Ultimate,这个是官方旗舰版也就是商用版本,官方只提供 ...

  9. fetch是什么?写一个fetch请求

    fetch是web提供的一个可以获取异步资源的api,目前还没有被所有浏览器支持,它提供的api返回的是Promise对象,所以你在了解这个api前首先得了解Promise的用法. 参考链接:http ...

  10. 2018-8-10-win10-uwp-Window.Current.Dispatcher中Current为null

    title author date CreateTime categories win10 uwp Window.Current.Dispatcher中Current为null lindexi 201 ...