我只是遇到了一个功能问题,它试图不断地每秒写一个终端以便连续接收数据:
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);
}
}
我认为程序写入端口但它没有执行之后调用的读取函数。你能帮我个忙吗?
答案 0 :(得分:4)
在elli
功能中,您有无限循环,这是您无法阅读的方式。您应该更改while
循环条件,或者尝试使用并发计算创建程序。
答案 1 :(得分:0)
要完成您到目前为止所描述的内容,您有多种选择,所有这些选项都是高级的,需要parallel processing
您可以通过IPC
,multiple processes
或{{1}执行此操作}。
简而言之,您将希望其中一个伪进程成为生成者,他们编写数据,另一个成为读者,他们会使用这些数据。这是一个经典的并行计算问题;读者 - 作家场景。
快速了解分叉或产生线程或读写器的基础知识应提供大量示例。