1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 运维 - 正文

君子好学,自强不息!

关于Linux串口测试工具解析

2022-11-09 | 运维 | gtxyzz | 641°c
A+ A-

由于已经完成了***个HELLO程序,标志着整个编译环境已经没有问题了,下来准备做一下串口测试程序。由于串口驱动开发板已经作好了,所以就作一个Linux串口测试工具简单的数据收发看看。

/*rs232_send.c*/ 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#defineBAUDRATEB115200//38400 
#defineMODEMDEVICE"/dev/ttyS1" 
intmain() 
{ 
intfd,c=0,res; 
structtermiosoldtio,newtio; 
intch; 
staticchars1[20],buf[19]; 
printf("start...\n"); 
/*打开PC的COM1口*/ 
fd=open(MODEMDEVICE,O_RDWR|O_NOCTTY); 
if(fd 
{ 
perror(MODEMDEVICE); 
exit(1); 
} 
printf("open...\n"); 
/*将旧的通讯参数存入oldtio结构*/ 
tcgetattr(fd,&oldtio); 
/*初始化新的newtio*/ 
bzero(&newtio,sizeof(newtio)); 
/*8N1*/ 
newtio.c_cflag=BAUDRATE|CS8|CLOCAL|CREAD; 
newtio.c_iflag=IGNPAR; 
newtio.c_oflag=0; 

/*正常模式*/ 
/*newtio.c_lflag=ICANON;*/ 
 
/*非正常模式*/ 
newtio.c_lflag=0; 
newtio.c_cc[VTIME]=0; 
newtio.c_cc[VMIN]=10; 

tcflush(fd,TCIFLUSH); 
/*新的temios作为通讯端口参数*/ 
tcsetattr(fd,TCSANOW,&newtio); 
printf("writing...\n"); 

while(1) 
{ 
res=read(fd,buf,10); 
res=write(fd,buf,7); 
if(buf[0]==9)break; 
} 

printf("close...\n"); 
close(fd); 
/*还原旧参数*/ 
tcsetattr(fd,TCSANOW,&oldtio); 
return0; 
} 

还有一点要注意,就是Linux串口测试工具串口有两种工作模式,即正规模式和非正规模式,如果习惯在串口调试器中用16进制发送,此时串口应该为非正规模式才行。

下面是这两种模式的说明 Linux串口测试工具正规模式(CANONICAL或者COOKED) 此模式下,终端设备会处理特殊字符,并且数据传输是一次一行的方式,既按回车后才开始发送和接收数据。例如LINUX的SHELL。 Linux串口测试工具非正规模式(NON-CANONICAL或者RAW) 此模式下,终端设备不会处理特殊字符,并且数据传输是一次一个字符的方式,既不用按回车换行。例如LINUX的VIM。

本文来源:1818IP

本文地址:https://www.1818ip.com/post/8099.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。