gpt4 book ai didi

c - vxworks串口读取超时

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:56 24 4
gpt4 key购买 nike

我正在使用安装在 UEIPAC 600 1-G 盒子上的 vxworks。我正在尝试从串口读取数据。这是我的代码。

void read_serial(int n){
/* store number of bytes read = int n*/
int num=0;
/* hold the file descriptor */
int fd = 0;
/* dev name from iosDevShow output */
char dev_name[] = "/tyCo/0";
/* buffer to receive read */
char re[n];
/* length of string to read */
int re_len = n;
/* open the device for reading. */
fd = open( "/tyCo/0", O_RDWR, 0);
num = read( fd, re, re_len); /* read */
close( fd ); /* close */
printf("number of bytes read %d\n",num); /* display bytes read*/
printf("displaying the bytes read: %s\n",re);
}

当我运行它时,它只是超时,直到我按下键盘输入然后像这样输出

number of bytes read 1
displaying the bytes read:
Pp

我该如何解决这个问题才能从串行端口正确读取。

最佳答案

你不检查是否打开串口成功

fd = open( "/tyCo/0", O_RDWR, 0); 
if (fd < 0) {
/* handle the error */
}

你不检查你从串口读取是否成功。

num = read( fd, re, re_len); /* read */ 
if (num < 0) {
/* handle the error */
}

您假设从串行端口读取将产生可打印的字符串,这可能是不正确的。当您打印出从串行端口读取的数据时,您可能应该以十六进制形式转储数据,以便确定提取了哪些字节值。

for (int i = 0; i < num; ++i) {
printf(" %02x", re[i]);
}
putchar('\n');

关于c - vxworks串口读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com