我创建了一个自定义库来与自己的板进行通信。库中的代码可以工作,但是当我调用库本身时,会出现错误。
我认为该库无法正常工作,因此我在库中放置了打印功能。看来,该功能正常工作,并且具有串行通讯功能是问题所在。
我自己检查了通信代码,但是每次都能工作。假设在自定义库中使用串行时需要处理一些事情,我什么都不知道。
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()))
答案 0 :(得分:0)
我设法解决了这个问题。疯狂物理学家是正确的,问题是串行端口保持打开状态。当我尝试重新运行该程序时,它将尝试打开一个已经打开的端口。
在我的库中添加CloseSerial函数并在示例中调用它之后,问题解决了。
#File name iDealibrary.py
def CloseSerial():
ser.close()
#File name example.py
iDealibrary.ConnectIdeaLab()
iDealibrary.CloseSerial()