天嵌 ARM开发社区

 找回密码
 注册
查看: 3260|回复: 3

请教亚瑟王关于TQ2440串口测试程序能写入数据,但不能读出数据(read()函数总是返回0

[复制链接]
6724243 发表于 2013-3-18 16:04:08 | 显示全部楼层 |阅读模式
在运行天嵌提供的串口测试程序Serial_Test.c时,只能写入数据,不能读出数据(read()函数总是返回0)。串口控制台输出如下:
[root@EmbedSky Serial_Test]# ./serial_test
readserailcfg
serialread.dev is /dev/tq2440_serial2
serialread.speed is 115200
serialread.databits is 8
serialread.stopbits is 1
serialread.parity is N
isatty success!
nwrite=15
^C
[root@EmbedSky Serial_Test]#
而天嵌提供的Linux移植手册显示,是可以读出数据的,手册的内容如下:
readserailcfg
serialread.dev is /dev/tq2440_serial2
serialread.speed is 115200
serialread.databits is 8
serialread.stopbits is 1
serialread.parity is N
isatty success!
nwrite=15
recv:1

H
recv:1
e
recv:1
l
recv:1
l
recv:1
o
recv:1
,
recv:10
EmbedSky#!
我后来在网上查了一下,有种说法是read()函数总是返回0,表明到达了文件的尾部。我就试着改了以下代码红色部分:
void serial_rw()
{
int i;
char buff[512];
char buff2[] = "hello,TQ2440!\n";
int nread,nwrite;

nwrite = write(serial_fd,buff2,sizeof(buff2));
printf("nwrite=%d\n",nwrite);
while(1)
{
  
lseek(serial_fd,0,SEEK_SET);//让文件读写指针相对于文件开头移动0字节

  memset(buff,0,sizeof(buff));
  if((nread = read(serial_fd,buff,512))>0)
  {
   buff[nread] = '\0';
#if 0 //调用这段代码可以实现回显,如果配合上面的回显,就会出现回显两次的情况。
   write(serial_fd,buff,nread);
#endif
   printf("\nrecv:%d\n",nread);
#if 0
   for(i=0;i<nread;i++)
   {
    printf("%c",buff);
   }
   printf("\n");
#else
   printf("%s",buff);
   printf("\n");
#endif
  }
}

close(serial_fd);
}
添加上述红色代码后,重新编译运行后,串口控制台还是没有读出数据,即read()函数还是返回0。实在不明白为什么会这样?



TQ-lkp 发表于 2013-3-18 17:09:58 | 显示全部楼层
本帖最后由 TQ-lkp 于 2013-3-18 17:11 编辑

亲,串口自发自收是要短路的,不短路的话串口另一段要接一个设备来发信息
回复

使用道具 举报

 楼主| 6724243 发表于 2013-3-18 18:21:49 | 显示全部楼层
TQ-lkp 发表于 2013-3-18 17:09
亲,串口自发自收是要短路的,不短路的话串口另一段要接一个设备来发信息

版主,你好。我上面的操作时通过USB转串口和串口线将笔记本电脑、开发板连接起来的,用SecureCRT打开串口后启动开发板,然后./serial_test运行串口测试程序后,按照您的意思接下来应该怎么操作?是不是在不断电的情况下直接拔掉开发板的串口线,然后将开发板串口的TX、RX短接吗?不断电插拔串口会不会对开发板有什么影响?
回复

使用道具 举报

jing007520 发表于 2013-8-1 22:02:25 | 显示全部楼层
天嵌serial_test.c测试的时候用的是2个com端口,开发板只有一个。我想是不是另外一个要用飞线从uart处引出,连接到电脑的另外一个实际的端口上,才能做这个实验。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-19 18:50 , Processed in 2.046176 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表