我有一个设备,它返回一个字符串以响应写入设备文件的命令。我可以向设备写入命令,并使用如下代码读取C中的返回字符串:
int dev = open("/dev/USBDev251", O_RDWR);
write(dev, data, sizeof(data));
read(dev, buff, 16);
在Python中,我也在尝试这样做:
dev = os.open("/dev/USBDev251", os.O_RDWR)
os.write(dev, data)
os.read(dev, 16)
写入成功,但只返回空字符串。我错过了什么?
添加一个
os.lseek()
以查找所写字符串的开头。目前你写了16个字节来提高指针的速度。当你读的时候,你从当前的指针开始读,所以你需要把它备份到你写的开始。这对我有效:
根据^{} documentation :
你不应该在这里混搭。如果使用全局函数
open()
打开文件,则只能使用文件对象的read()
和write()
方法。相反,如果使用os.open()
打开文件,则只能使用os.read()
和os.write()
。所以,尝试用
os.open()
替换对open()
的调用;或者,保留open()
调用,用dev.write(...)
替换os.write(dev, ...)
,用dev.read(...)
替换os.read(dev, ...)
。相关问题 更多 >
编程相关推荐