Chinaunix

标题: 终端串口编程的怪问题:---高手请进 [打印本页]

作者: landhawk    时间: 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上面,怎样才能解决不按这个回车呢?
作者: htldm    时间: 2003-07-10 13:43
标题: 终端串口编程的怪问题:---高手请进
帮你在别的坛子贴一下。
作者: 无双    时间: 2003-07-10 13:51
标题: 终端串口编程的怪问题:---高手请进
会不会是跟市口的模式有关

缓冲区有两种模式
原始模式  每输入一个字符直接返回 不做任何解释
熟模式  转入一行后才返回  同时解释 del 等特殊符
作者: wqkjj    时间: 2003-07-10 14:28
标题: 终端串口编程的怪问题:---高手请进
1、在你的屏幕初始化函数或者其他合适的地方加入函数:
     cbreak(); nonl();
     系统缺省情况下,read会在输入enter或者超时信号达到时返回,类似的问题如利用getch(),getchar()读键盘输入。
2、这里和辅助设备是否立即送主机还是达到一定的字符数再送主机没有关系。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2