QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 737|回复: 1

请教各位高手串口编程的问题

[复制链接]
发表于 2005-9-7 14:38:01 | 显示全部楼层 |阅读模式
小弟乃正宗LINUX菜鸟一只,现在用嵌入式linux开发ARM9串口通讯。由于实时性强,不能用read一直查询串口(太占资源);由于是菜鸟,不会用中断直接读取寄存器。搜资料时看见大名顶顶的经典文章-Linux Serial Programming HOWTO ,里面的第三种方法-非同步式输入使用的是SIGIO信号,符合我的要求,但我用不好使,即进不到信号处理函数。请各位高手赐教。其关于信号部分的代码如下:

struct sigaction saio;           /* definition of signal action */

  /* 在使装置非同步化前, 安装讯号处理程序 */
  saio.sa_handler = signal_handler_IO;
  saio.sa_mask = 0;
  saio.sa_flags = 0;
  saio.sa_restorer = NULL;
  sigaction(SIGIO,&saio,NULL);
   
  /* 允许行程去接收 SIGIO 讯号*/
  fcntl(fd, F_SETOWN, getpid());
  /* 使档案ake the file descriptor 非同步 (使用手册上说只有 O_APPEND 及
  O_NONBLOCK, 而 F_SETFL 也可以用...) */
  fcntl(fd, F_SETFL, FASYNC);

void signal_handler_IO (int status)
{
  printf("received SIGIO signal.\n");

}

请问以上程序有问题吗?使用三根线的串口线(2-3,3-2,5-5)有问题吗?使用该程序(我指接收SIGIO信号)用对termios结构体做什么设置吗?另外如果我是在线程中实现该程序用fcntl(fd, F_SETOWN, getpid())可以吗?

敬请赐教,不胜感激!
发表于 2005-9-8 21:26:19 | 显示全部楼层
没有阻塞模式么,就是read时如果没数据就阻塞。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-5 11:24 , Processed in 0.056557 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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