在C中每秒写入设备字节

时间:2013-08-14 20:58:56

标签: c linux

我只是遇到了一个功能问题,它试图不断地每秒写一个终端以便连续接收数据:

int plash(int filedes) {
    static struct p_1 = {
        .X = 1,
        .Y = 10,
        .Z = 13
    };
    return write(fd, &p_1, sizeof(p_1));
}

int elli() {
    while (1) {
        int g = plash(fd);
        printf("Writing to port:%d\n", g);
        sleep(1);
    }
    return 1;
}

int main(int argc, char *argv[]) {
    uint8_t buffer[128];
    int bRead;
    fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);
    while (fd > 0) {
        elli();
        bRead = read(fd, buffer, 128);
        printf("Got %i Bytes\n", bRead);
    }
}

我认为程序写入端口但它没有执行之后调用的读取函数。你能帮我个忙吗?

2 个答案:

答案 0 :(得分:4)

elli功能中,您有无限循环,这是您无法阅读的方式。您应该更改while循环条件,或者尝试使用并发计算创建程序。

答案 1 :(得分:0)

要完成您到目前为止所描述的内容,您有多种选择,所有这些选项都是高级的,需要parallel processing您可以通过IPCmultiple processes或{{1}执行此操作}。

简而言之,您将希望其中一个伪进程成为生成者,他们编写数据,另一个成为读者,他们会使用这些数据。这是一个经典的并行计算问题;读者 - 作家场景。

快速了解分叉或产生线程或读写器的基础知识应提供大量示例。