0

Python で通信しようとしている IC があります。数バイトを書き込んでから応答を読み取る C アプリケーションが動作していますが、Python で同じ結果が得られないようです。

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);

パイソン:

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)
4

1 に答える 1

2

os.openCプログラムに合わせてデバイスを開くために使用する必要があります。

バッファリングされた IO の使用を主張する場合は、読み取りを試みる前に少なくともフラッシュする必要があります。

于 2013-03-16T11:46:34.400 に答える