📄 testcom.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <termios.h>
#include <sys/ioctl.h>
#define CMSPAR 010000000000
void setTermios(struct termios * pNewtio, unsigned short uBaudRate)
{
bzero(pNewtio, sizeof(struct termios));
pNewtio->c_cflag = uBaudRate | CS8 | CREAD | CLOCAL;
pNewtio->c_iflag = IGNPAR;
pNewtio->c_oflag = 0;
pNewtio->c_lflag = 0;
pNewtio->c_cc[VINTR] = 0;
pNewtio->c_cc[VQUIT] = 0;
pNewtio->c_cc[VERASE] = 0;
pNewtio->c_cc[VKILL] = 0;
pNewtio->c_cc[VEOF] = 4;
pNewtio->c_cc[VTIME] = 5;
pNewtio->c_cc[VMIN] = 0;
pNewtio->c_cc[VSWTC] = 0;
pNewtio->c_cc[VSTART] = 0;
pNewtio->c_cc[VSTOP] = 0;
pNewtio->c_cc[VSUSP] = 0;
pNewtio->c_cc[VEOL] = 0;
pNewtio->c_cc[VREPRINT] = 0;
pNewtio->c_cc[VDISCARD] = 0;
pNewtio->c_cc[VWERASE] = 0;
pNewtio->c_cc[VLNEXT] = 0;
pNewtio->c_cc[VEOL2] = 0;
}
#define BUFSIZE 512
int main(int argc, char **argv)
{
int fd,maxfd;
int nCount,nTotal,i;
struct termios oldtio,newtio;
char dev[24];
if((argc < 5) && (strcmp("-r",argv[2])))
{
printf("Usage: \n\r");
printf("For writing, TestCom /dev/ttyS* -w count data!\n\r");
printf("For Receiving, TestCom /dev/ttyS* -r!\n\r");
exit(0);
}
strcpy(dev,argv[1]);
if((fd = open(dev,O_RDWR | O_NOCTTY ))<0)
{
printf("Can't Open Serial Port: %s!\n",dev);
exit(0);
}
tcgetattr(fd,&oldtio);
setTermios(&newtio,B115200);
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
if(!strcmp("-r",argv[2]))
{
char buff[BUFSIZE];
struct timeval tv;
fd_set rfds,watchset;
FD_ZERO(&rfds);
FD_ZERO(&watchset);
FD_SET(fd,&watchset);
maxfd = fd + 1;
while(1)
{
tv.tv_sec=10;
tv.tv_usec=0;
rfds = watchset;
if(select(maxfd,&rfds,NULL,NULL,&tv)>0)
{
if(FD_ISSET(fd,&rfds))
{
nCount=read(fd, buff, BUFSIZE);
printf("readlength=%d\n\r",nCount);
buff[nCount]='\0';
printf("%s\n\r",buff);
}
}
}
}
else if(!strcmp("-w",argv[2]))
{
nTotal = atoi(argv[3]);
for (i=0;i<nTotal;i++)
{
nCount=write(fd, argv[4], strlen(argv[4]));
printf("send data OK! count=%d\n",nCount);
sleep(1);
}
}
tcsetattr(fd,TCSANOW,&oldtio);
close(fd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -