python - 在 beaglebone black 上读取事件文件 C 和 python 时观察到的差异

标签 python c beagleboneblack

我使用了以下图例:

http://hipstercircuits.com/capture-input-events-via-gpio-on-beaglebone-black/

这段Python代码通过读取事件文件来工作,文件读取调用是一个阻塞调用,直到事件发生。

让它工作后,我创建了一个模仿python代码的c实现,并产生了好奇,当在python中读取文件:“/dev/input/event1”时,使用了以下命令:

evt_file = open("/dev/input/event1", "rb")
while True:
    evt = evt_file.read(16) 
    evt_file.read(16) 
    #Do stuff

正如之前所说,这段代码是一个阻塞调用,直到发生一个事件,然后这段代码读取1个事件的内容,在做了C实现之后,我发现我需要下面的代码来实现工作:

unsigned char *buffer[8];
fp = fopen("/dev/input/event1", "r");
while(1)
{
    fread(&buffer, sizeof(*buffer), 8, fp);
    //Do stuff
}

可以看出,在 python 实现中我读取了 32 个字符,在 C 实现中我读取了 8 个字符,但我发现它们都从文件中读取了相同数量的信息,因为它们每个事件都会准确地 react 一次我生成,有人知道为什么吗?

最佳答案

unsigned char buffer[8];
fp = fopen("/dev/input/event1", "r");
while(1)
{
    fread(buffer, 1, sizeof(buffer), fp);
    //Do stuff
}

此外,请检查您的返回值。

关于python - 在 beaglebone black 上读取事件文件 C 和 python 时观察到的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590137/

相关文章:

python - 当我的 while 循环满足特定条件时,如何结束我的程序?

python - 递归地颠倒链表中数字的顺序

python - keras model.fit 函数打印的准确率与验证集还是训练集有关?

c++ - 为什么概念上的存储分配与实际不同?

c++ - 从 C 优雅地调用 C++

linux - Beaglebone 黑色 DS1307

python - 如何在Python中将数据写入csv文件

c - 为什么函数指针不被视为指向函数?

debian - BeagleBone Black debian 图像

named-pipes - USB 大容量存储小工具上的命名管道/FIFO,用于为汽车、码头等流式传输音频。