自定义库中的串行通信
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()
我制作了一个自定义库来与我自己的板进行通信。库中的代码有效,但是当我调用库本身时出现错误。
我假设库不工作,所以我在库中放了一个打印函数。看来,该功能有效,而串行通信的功能是问题所在。
我自己检查了通信代码,但每次都有效。假设在自定义库中使用序列号时需要处理一些我不知道的事情。
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()