⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcom.c

📁 at91ARM9200串口例程
💻 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 + -