美文网首页
python的串口连接

python的串口连接

作者: 乔大叶_803e | 来源:发表于2020-03-26 11:20 被阅读0次

    python真的是强大。
    还能处理串口的数据。

    今天主要解释下串口如何进行通信的。

    首先进行串口通信用的是

    import serial

    也就是这个包起的作用。

    首先我们可以先测试哪个端口是可以使用的。

    # coding:utf-8
     
    import serial.tools.list_ports
     
    plist = list(serial.tools.list_ports.comports())
     
    if len(plist) <= 0:
        print("没有发现端口!")
    else:
        plist_0 = list(plist[0])
        serialName = plist_0[0]
        serialFd = serial.Serial(serialName, 9600, timeout=60)
        print("可用端口名>>>", serialFd.name)
    

    查看现在可以用的端口数

    我的电脑输出的是com3

    serialport = serial.Serial(serialName, 115200, timeout=1,parity=serial.PARITY_EVEN, rtscts=1)
    

    serialName 就是端口名称,也就是上边自动检测到的com3
    其余的参数是 波特率

    bytesize为每个字节的比特数,设置值为FIVEBITS, SIXBITS,SEVENBITS, EIGHTBITS 5-8比特;

    parity设置校验位PARITY_NONE, PARITY_EVEN,PARITY_ODD PARITY_MARK,

    PARITY_SPACE,用来设置校验位;stopbits停止位,用来指示字节完成,可以选择的设置STOPBITS_ONE,

    timeout (float)读出超时设置;xonxoff (bool)软件流控开关;

            if x.isOpen():
                print("open success")
            else:
                print("open failed")
    

    检查串口是否正常打开,只有打开了才能进行通信

    现在基本的准备工作做完了,下来是进行发送和接收信息。


    处理串口的发送代码
    def fasong():
        f = 0
        while f <1:
            print("zai fa song ")
            time.sleep(3)
            myinput=bytes([0x3f,0x0D,0x0A])  # 需要发送的十六进制数据的 ?  回车键  以及换行符
            x.write(myinput)
            time.sleep(3)
            f = f + 1
    
    

    没有直接写成死循环是因为希望进行顺序通信的,我在网上看到有的是写了个死循环,然后开启了线程进行通信的,这里没用这个方法。

    开始的时候我只发送了一个 但是返回的数据都是空,一直寻找不到原因,最后通过示波器,把发送代码的波形进行对比发现发送的波形除了?还有一个回车以及换行的信号。

    补足了代码也就返回了信息。

    def jieshou():
        j = 0
        while j < 1:
            print("zai  jie shou")
            # print(x.inWaiting)
            while x.inWaiting() > 0:
                # global lastval
                myout=x.read(8) # 提取接收缓冲区中的前8个字节数
                rainval = myout.decode('gbk')
                # val = rainval - lastval
                print(rainval)
    
            # lastval = rainval
            j = j + 1
    

    这是接收部分的代码。

    相关文章

      网友评论

          本文标题:python的串口连接

          本文链接:https://www.haomeiwen.com/subject/udmquhtx.html