我有下面的代碼如下擔憂:與pyserial工作:打印結果
我將如何能夠打印出什麼接收到這樣的結果,如果我輸入狀態1,它應該返回close1/open1?我正在使用的USB控制器具有連接到它們的鎖具有一組可以通過ASCII進行通信的命令。就像我發送命令status1一樣,它應該反饋回open1/close1。
在條件行
if (ser.isOpen() == False):
它不完全檢查,看看是否該端口是開放的,即使沒有連接它繞過該行並嘗試發送,這顯然會返回一個錯誤
命令下面是代碼(我使用Python 3,但一些代碼是基於Python的2):
import serial
#Using pyserial Library to establish connection
#Global Variables
ser = 0
#Initialize Serial Port
def serial_connection():
COMPORT = 3
global ser
ser = serial.Serial()
ser.baudrate = 38400 #Suggested rate in Southco documentation, both locks and program must be at same rate
ser.port = COMPORT - 1 #counter for port name starts at 0
#check to see if port is open or closed
if (ser.isOpen() == False):
print ('The Port %d is Open '%COMPORT + ser.portstr)
#timeout in seconds
ser.timeout = 10
ser.open()
else:
print ('The Port %d is closed ' %COMPORT)
#call the serial_connection() function
serial_connection()
ser.write(b'close2\r\n')
在此先感謝和任何澄清,請告知。
另請注意,串行端口通常無法確定它們是否實際連接到某些東西 - 除非例如您知道您連接的設備具有非默認設置,用於RTS/CTS等額外狀態行。由於它們被插入的特性,它們可能會被拔出或斷電,所以當您發送命令時,您必須等待一段時間才能查看是否有任何事情返回,並優雅地處理部分響應。 – barny
調試串行端口的好方法是將運行python的PC連接到終端(例如另一臺PC)或使用虛擬串行端口(如com0com),將PC上的終端應用程序連接到應用程序正在與之交談的虛擬端口。然後你可以假裝成鎖裝置(延長超時時間以允許時間延遲)。 – barny