免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3075 | 回复: 2
打印 上一主题 下一主题

tty串口驱动问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-26 11:26 |只看该作者 |倒序浏览
本人在调试串口驱动时遇到这样的问题:
在串口接收数据部分:一收到数据就会产生中断,把字符存在变量ch中,然后调用tty_insert_flip_char(tty, ch, flg);这个函数把它存到内核的buffer,最后调用tty_flip_buffer_push(tty);应用层却得不到数据,为什么?
硬件方面是肯定没有问题的,打印变量ch的值就是我传输的值。
请高手解答啊。


  1. static inline int tty_insert_flip_char(struct tty_struct *tty,
  2.   12                                        unsigned char ch, char flag)
  3.   13{
  4.   14        struct tty_buffer *tb = tty->buf.tail;
  5.   15        if (tb && tb->active && tb->used < tb->size) {
  6.   16                tb->flag_buf_ptr[tb->used] = flag;
  7.   17                tb->char_buf_ptr[tb->used++] = ch;
  8.   18                return 1;
  9.   19        }
  10.   20        return tty_insert_flip_string_flags(tty, &ch, &flag, 1);
  11.   21}
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-08-28 19:01 |只看该作者
看你的tty串口是什么线路规则,如果是标准的行规范,那么你的应用程序一直会被阻塞直到有回车符输入才有才会从内核返回,哥们,你可以确认下是否有回车符从输入

论坛徽章:
0
3 [报告]
发表于 2010-08-30 13:09 |只看该作者
struct termios opt;
tcgetattr(fd,&opt);
cfmakeraw(&opt);
tcsetattr(fd,TCSANOW,&opt);


我在用户态下加入这几个函数就可以接受到数据了。
这几个应该是设置线路规程为非规范模式吧??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP