2013-03-16 26 views
0

我有一個IC,我試圖在Python中進行通信。我有一個工作的C應用程序,寫了幾個字節然後讀取響應,但我似乎無法在Python中獲得相同的結果。在Python中寫入IC

IC確實用Python代碼響應,但它錯誤地暗示寫入內容無效。

這是我到目前爲止所。

工作的C實現:

unsigned char buffer[2]; 
int dev; 

dev = open(device_path, O_RDWR); 

buffer[0] = 0xB8; 
buffer[1] = 0x00; 

if (write(*dev, buffer, 2) < 2){ 
    //error 
} 

buffer[0] = 0xBE; 

if(write(*dev, buffer, 2) < 2){ 
    //error 
} 

if(read(*dev, output, 9) < 9){ 
    //error 
} 

close(dev); 

的Python:

dev = open(device_path, 'r+') 
buff = pack('BB', 0xB8, 0x00) 
device.write(buff) 
buff = pack('BB', 0xBE, 0x00) 
device.write(buff) 
out = device.read(9) 
out = unpack('BBBBBBBBB', out) 
print out 
dev.close() 

工作的Python:

dev = os.open(device_path, os.O_RDWR) 
buff = pack('BB', 0xB8, 0x00) 
os.write(device, buff) 
buff = pack('BB', 0xBE, 0x00) 
os.write(device, buff) 
out = os.read(device, 9) 
out = unpack('BBBBBBBBB', out) 
print out 
os.close(dev) 

回答

2

您應該使用os.open打開設備相匹配的C程序。

如果你堅持使用緩衝IO,你應該至少在嘗試讀取之前刷新。

+0

謝謝,我會放棄。 Python中緩衝IO的替代選擇是什麼? – DarkRyuu 2013-03-16 12:01:05

+0

os.open和os.write做的竅門謝謝! – DarkRyuu 2013-03-16 12:15:10