-1

我只是在尝试每秒不断地向终端写入以连续接收数据的功能时遇到问题:

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);
    }
}

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

4

2 回答 2

4

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

于 2013-08-14T21:02:28.873 回答
0

要完成到目前为止您所描述的内容,您有多种选择,所有这些选择都是高级的,并且要求parallel processing您可以通过IPCmultiple processesmultiple threads.

简而言之,您会希望这些伪进程中的一个成为写入数据的生产者,而另一个成为消费所述数据的读取者。这是一个经典的并行计算问题;读写器场景。

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

于 2013-08-15T23:12:30.880 回答