zoukankan      html  css  js  c++  java
  • Python 操作串口

     import serial导入模块
    
    然后就可以用了
    
    ser = serial.Serial(0) 是打开第一个串口
    
    print ser.portstr 能看到第一个串口的标识,windows下是COM1
    
    ser.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 serial
    ser = serial.Serial('COM3')
    ser.setBaudrate(9600)
    ser.setByteSize(8)
    ser.setStopbits(1)
    print ser.portstr
    data = ser.readline(0,'
    ')
    data = ser.read(20)
    print data

    我的串口操作:

    
    
    # coding=utf-8
    import serial
    import pymysql
    import threading
    import time
    x=serial.Serial('COM3',9600)#这是我的串口,测试连接成功,没毛病
    # i=0
    def 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
     
  • 相关阅读:
    36_Cache Aside Pattern缓存+数据库读写模式的分析
    35_亿级流量商品详情页的多级缓存架构以及架构中每一层的意义
    34_redis阶段性总结:1T以上海量数据+10万以上QPS高并发+99.99%高可用
    33_redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)
    正则表达式全部符号解释
    如何正确学习JavaScript
    2015阿里校招前端笔试题
    前端面试总结2
    前端面试总结
    通俗易懂的来讲讲DOM
  • 原文地址:https://www.cnblogs.com/zhengweizhao/p/8426826.html
Copyright © 2011-2022 走看看