博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转: python 操作串口
阅读量:5234 次
发布时间:2019-06-14

本文共 2018 字,大约阅读时间需要 6 分钟。

https://www.cnblogs.com/zhengweizhao/p/8426826.html

import serial导入模块然后就可以用了ser = serial.Serial(0) 是打开第一个串口print ser.portstr 能看到第一个串口的标识,windows下是COM1ser.write(“hello") 就是往串口里面写数据ser.close() 就是关闭ser表示的串口ser.open() 会打开这个串口ser = serial.Serial('COM1', 115200) 来设置波特率,当然还有专门的函数data = ser.read()可以读一个字符data = ser.read(20) 是读20个字符data = ser.readline() 是读一行,以/n结束,要是没有/n就一直读,阻塞。data = ser.readlines()和ser.xreadlines()都需要设置超时时间ser.baudrate = 9600 设置波特率ser 来查看当前串口的状态ser.isOpen() 看看这个串口是否已经被打开import serialser = serial.Serial('COM3')ser.setBaudrate(9600)ser.setByteSize(8)ser.setStopbits(1)print ser.portstrdata = ser.readline(0,'\r\n')data = ser.read(20)print data

我的串口操作:

# coding=utf-8import serialimport pymysqlimport threadingimport timex=serial.Serial('COM3',9600)#这是我的串口,测试连接成功,没毛病# i=0def fasong():#发送函数    while True:        time.sleep(3)        myinput= bytes([0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A])        #这是我要发送的命令,原本命令是:01 03 00 00 00 01 84 0A        x.write(myinput)def jieshou():#接收函数    while True:       while x.inWaiting()>0:           myout=x.read(7)#读取串口传过来的字节流,这里我根据文档只接收7个字节的数据           datas =''.join(map(lambda x:('/x' if len(hex(x))>=4 else '/x0')+hex(x)[2:],myout))#将数据转成十六进制的形式           new_datas = datas.split("/x")#将字符串分割,拼接下标4和5部分的数据           need = new_datas[4]+new_datas[5];#need是拼接出来的数据,比如:001a           my_need = int(hex(int(need,16)),16)#将十六进制转化为十进制           sql = "INSERT INTO VOC_DATA(value,create_time)VALUES('"+str(my_need)+"',"+str(int(time.time()))+")"           # 使用 execute()  方法执行 SQL 查询           # 执行sql语句           cursor.execute(sql)            # 提交到数据库执行           db.commit()if __name__== '__main__':    # 打开数据库连接     db = pymysql.connect("localhost","root","123456789","voc" )    # 使用 cursor() 方法创建一个游标对象 cursor     cursor = db.cursor()     t1 = threading.Thread(target=jieshou,name="jieshou")#线程1:不断的去请求数据     t2= threading.Thread(target=fasong, name="fasong")#线程2:不断地去接收数据     t2.start()#开启线程1     t1.start()#开启线程2

 

转载于:https://www.cnblogs.com/yay1688/p/9965795.html

你可能感兴趣的文章
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
自己到底要的是什么
查看>>
Kruskal基础最小生成树
查看>>