我前一段时间发布了这个问题,但从未解决过。我有a system运行Linux,将RX从UART1连接到TX(回送)并执行了以下代码:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(void) {
int iFd = open("/dev/ttyTHS0", O_RDWR);
if (iFd < 0) {
fprintf(stdout, "Error when opening file.\n");
return -1;
}
while (1) {
if (write(iFd, "A", 1) == -1) {
fprintf(stdout, "Failed to write\n");
return -1;
}
char buff[1] = {
0
};
if (read(iFd, buff, sizeof(buff)) < 0) {
fprintf(stdout, "Failed to read.\n");
return -1;
}
fprintf(stdout, "read: %s\n", buff);
}
close(iFd);
return 0;
}
问题是似乎没有收到任何数据。该代码仅在read
处阻塞。 当用示波器查看时,我可以看到在tx线上传输的数据,但是rx没有接收到任何东西(因此与刷新缓冲区无关)。我还尝试将这段代码分为两个进程,一个进程用于发送,另一个进程用于接收,但这都不起作用。
我试图运行两个不同的过程来试图找出问题所在,但这并没有给我任何额外的线索。