【发布时间】:2021-06-21 05:38:49
【问题描述】:
我在运行 Debian 的工业 PC 上获得了一些 gpio 的字符设备。
用 C 语言阅读效果很好
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main (int argc, char **argv) {
int fd;
fd = open("/dev/bsw_gpio", O_RDWR);
if (fd == -1) {
printf("could not open device");
return 1;
}
unsigned char val;
int ret;
ret = read(fd, &val, sizeof(val));
if (ret == 0)
printf("Value : %d\n", val);
else
printf("No val read\n");
if(close(fd) != 0) {
printf("Could not close file");
}
return 0;
}
编辑
我忘了;这让我将两个 io 引脚的状态设为 0 到 3 之间的值并且运行良好。但我需要在 Python 中执行此操作。
而 Python 的反应方式是这样的
>>> import os
>>> fp = os.open("/dev/bsw_gpio", os.O_RDWR)
>>> os.read(fp, 1)
b''
或者,使用常开:
>>> with open('/dev/bsw_gpio', 'r+b', buffering=0) as fp:
... fp.read()
...
b''
我该如何解决这个问题?
【问题讨论】:
-
你能解释一下你期望的结果吗?
-
你试过用 sudo 运行你的脚本吗?
-
@KlausD。我期望 0 到 3 之间的字节值 - 抱歉,忘了提这个。 -克劳斯D。我知道更快地得到我的答案无济于事.. 但它让我感觉更好 - SlLoWre 与 sudo 的结果相同。
-
您可能希望将其包含在问题中。