(求助)写的程序在开发板上通过串口读RFID不稳定(有时能读到有时不能读到)

Jackindata
博客专家认证
2012-03-05 03:41:56

我用的是三星2440的开发板,板上加载了2.6内核的Linux。编写了一段代码通过串口读RFID。主要代码如下:

int read_rfid(char read_data[20])
{
int serial_fd;
int read_len = 14;
int read_byte = 0;

serial_fd = open("/dev/ttys/1",O_RDONLY, O_RSYNC);
fcntl(serial_fd, F_SETFL, 0);//设置阻塞读。
if (serial_fd == -1)
{
printf("open fail.\n");
perror("Serial open error!\n");
return -1;
}
set_rfid_uart(serial_fd);
read_byte = read(serial_fd, read_data, read_len);//read 14 bytes.
close(serial_fd);
return 1;
}

这段代码在PC机Ubuntu11.10下测试通过,能够读到RFID 的每次触发。但是当移植到开发板上时,触发十几次才能够读到一次。裸跑测试程序时串口是能够读到RFID 的每次触发的。裸跑是直接用这个的:
while(!(rUTRSTAT1 & 0x1)); //Receive data ready
ch = RdURXH1();
小弟百思不得其解。请大侠拔刀相助。
...全文
173 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jackindata 2012-03-10
  • 打赏
  • 举报
回复
串口的初始化中,本地模式成员 c_lflag 控制输入字符如何被串行驱动使用,ISIG 项使SIGINTR, SIGSUSP, SIGDSUSP, SIGQUIT等信号作用。这个要被设置,不然传输回来的数据中有一些会被以为是控制信号,例如十六进制03(TEX)。
Jackindata 2012-03-07
  • 打赏
  • 举报
回复
不明白。。

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧