自定义库中的串行通信

时间:2019-05-21 14:49:38

标签: python serial-port pyserial

我创建了一个自定义库来与自己的板进行通信。库中的代码可以工作,但是当我调用库本身时,会出现错误。

我认为该库无法正常工作,因此我在库中放置了打印功能。看来,该功能正常工作,并且具有串行通讯功能是问题所在。

我自己检查了通信代码,但是每次都能工作。假设在自定义库中使用串行时需要处理一些事情,我什么都不知道。

iDealibrary.py

import serial
import time

ser=serial.Serial('COM5',9600)

def ConnectIdeaLab():
    ser.sendBreak()
    a=ser.read()
    b=ser.read()
    if(a==b'O' and b ==b'K' ):
        ser.write(b'b')
        ser.write(b'b')
        ser.write(b'b')
        ser.write(b'a')
        ser.write(b'a')
        c=ser.read()
        if(c==b'!'):
            ser.write(bytes([3]))
            print("iDeaLab Moduna Girildi!")
            time.sleep(0.005)
            ser.sendBreak()

#this is the connection function. 

def printanything(parametre):
    print("writing: ",parametre)

#this is the print function to check if library is working.

example.py

import iDealibrary

iDealibrary.ConnectIdeaLab()
iDealibrary.printanything("selam")

#this does not work

我希望最后一个代码可以连接并打印iDealab moduna girildi。相反,我得到

raise SerialException("ClearCommError failed ({!r})".format(ctypes.WinError()))

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。疯狂物理学家是正确的,问题是串行端口保持打开状态。当我尝试重新运行该程序时,它将尝试打开一个已经打开的端口。

在我的库中添加CloseSerial函数并在示例中调用它之后,问题解决了。

#File name iDealibrary.py
def CloseSerial():
    ser.close()

#File name example.py
iDealibrary.ConnectIdeaLab()
iDealibrary.CloseSerial()