我想通過pySerial發送一些字節。我創建了socat虛擬串行端口,用於測試目的:用pySerial和socat發送字節時出現問題
socat PTY,link=./ptyp1,b9600 PTY,link=./ptyp2,b9600
這裏的Python代碼:
ser = serial.Serial('./ptyp1')
x = struct.pack('B',2)
print binascii.hexlify(x) # 02
ser.write(x)
y = ser.read(2)
print binascii.hexlify(y) # 5e42
的輸出中,我得到:
02 # x
5e42 # y
輸出我想到:
02 # x
02 # y
我是什麼在這裏做錯了嗎?是socat還是python?
編輯:
我只注意到一些其他奇怪的行爲,爲不同的x值。在這裏,輸出繼電器:
x = 12 => y = 5E 52 0D 0A 5E 50
x = 100 => y = 100 # why does it work here?
解決方案:
的問題是,我我寫的同一個端口上閱讀。如果我做對了,socat將兩個港口「連接」爲「進」和「出」。所以如果我寫入./ptyp1,我必須閱讀./ptyp2。之後,一切都很好。
好吧,但我不明白:當我只寫1(02)時,爲什麼我可以讀2個字節(5e 42)。我如何寫1個字節並讀取相同的字節? – nonsenz 2011-04-02 16:57:13