免费注册 查看新帖 |

Chinaunix

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

终端串口编程的怪问题:---高手请进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-10 12:32 |只看该作者 |倒序浏览
我写了一段程度访问终端串口3:终端是实达netterm810
char c[5];
char term_name[30];
int fd

sprintf( term_name , "%s" , ttyname( 1 ) ) ;
fd = open( term_name , O_RDWR ) ;
strcpy(comm0,"\033!0;0;0;0X\033[/50h\033[/53h\033[/54l";
write(fd,comm0,strlen(comm0));/*打开串口命令,特别注明:\033[/54l表示终端接受到一个辅设的字符直接送主机,而不是等到一个回车才送主机
strcpy(comm0,"\x1b[/51h\x1b\x5a\x30\x0d\x0a\x1b[/51l";
write(fd,comm0,strlen(comm0));/*测试辅设命令,如果正确返回"Z0OK"*/
read(fd,c,4);/*读返回值*/
strcpy(comm0,"\x1b[/50l";
write(fd,comm0,strlen(comm0));/*关闭串口*/
if (!strcmp(c,"Z0OK")
    printf("成功!!";


问题:当执行到read的时候,必须等到终端键盘按一下回车程序才会往下进行,结果会显示成功的字样,我不明白为什么非得等一个回车,不在终端键盘上按回车的话,程序停在read上面,怎样才能解决不按这个回车呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-07-10 13:43 |只看该作者

终端串口编程的怪问题:---高手请进

帮你在别的坛子贴一下。

论坛徽章:
0
3 [报告]
发表于 2003-07-10 13:51 |只看该作者

终端串口编程的怪问题:---高手请进

会不会是跟市口的模式有关

缓冲区有两种模式
原始模式  每输入一个字符直接返回 不做任何解释
熟模式  转入一行后才返回  同时解释 del 等特殊符

论坛徽章:
0
4 [报告]
发表于 2003-07-10 14:28 |只看该作者

终端串口编程的怪问题:---高手请进

1、在你的屏幕初始化函数或者其他合适的地方加入函数:
     cbreak(); nonl();
     系统缺省情况下,read会在输入enter或者超时信号达到时返回,类似的问题如利用getch(),getchar()读键盘输入。
2、这里和辅助设备是否立即送主机还是达到一定的字符数再送主机没有关系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP