自定义库中的串行通信

Serial communication inside a custom library

我制作了一个自定义库来与我自己的板进行通信。库中的代码有效,但是当我调用库本身时出现错误。

我假设库不工作,所以我在库中放了一个打印函数。看来,该功能有效,而串行通信的功能是问题所在。

我自己检查了通信代码,但每次都有效。假设在自定义库中使用序列号时需要处理一些我不知道的事情。

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()))

我设法解决了这个问题。疯狂物理学家是对的,问题是串行端口保持打开状态。当我尝试 re-run 程序时,它会尝试打开一个已经打开的端口。

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

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

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