用Python往集成电路写数据

0 投票
1 回答
831 浏览
提问于 2025-04-17 19:18

我有一个集成电路(IC),我想用Python和它进行通信。我已经有一个能正常工作的C语言程序,它可以写入几个字节,然后读取响应,但我在Python中却无法得到相同的结果。

虽然Python代码能让IC有反应,但返回的结果是错误的,提示写入的内容不合法。

这是我目前的进展。

正常工作的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)

1 个回答

2

你应该使用 os.open 来打开设备,这样才能和C语言程序对应起来。

如果你坚持要使用带缓冲的输入输出,至少在尝试读取之前要先刷新一下。

撰写回答