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

📄 ser.h

📁 QNX 系统下的串口通讯控制程序,可以根据自己的想法进行修改
💻 H
字号:
#ifndef _SER_H_
#define _SER_H_
/***********************************************************************/
//
//OCU line-up test instrument examination tool V1.0
//author:liuwei
//date:090205
/***********************************************************************/
#endif //_SER_H_
int openport(char *Dev1)  
 {
 int fd = open( Dev1, O_RDWR|O_NOCTTY|O_NDELAY );
 if (-1 == fd) 
 {    
  perror("Can''t Open Serial Port");
  return -1;  
 } 
 else 
  return fd;

 }  
   
int setport(int fd, int baud,int databits,int stopbits,int parity)
{
 int baudrate;
 struct   termios   newtio;  
 switch(baud)
 {
 case 300:
  baudrate=B300;
  break;
 case 600:
  baudrate=B600;
  break;
 case 1200:
  baudrate=B1200;
  break;
 case 2400:
  baudrate=B2400;
  break;
 case 4800:
  baudrate=B4800;
  break;
 case 9600:
  baudrate=B9600;
  break;
 case 19200:
  baudrate=B19200;
  break;
 case 38400:
  baudrate=B38400;
  break;
 default :
  baudrate=B9600;  
  break;
 }
 tcgetattr(fd,&newtio);    
 //bzero(&newtio,sizeof(newtio));  
   //setting   c_cflag
 newtio.c_cflag   &=~CSIZE;    
 switch (databits)
 {  
 case 7:  
  newtio.c_cflag |= CS7;
  break;
 case 8:    
  newtio.c_cflag |= CS8; 
  break;  
 default:   
  newtio.c_cflag |= CS8;
  break;    
 }
 switch (parity) 
 {  
 case 'n':
 case 'N':   
  newtio.c_cflag &= ~PARENB;  
  newtio.c_iflag &= ~INPCK;    
  break; 
 case 'o':  
 case 'O':    
  newtio.c_cflag |= (PARODD | PARENB);  
  newtio.c_iflag |= INPCK;            
  break; 
 case 'e': 
 case 'E':  
  newtio.c_cflag |= PARENB;        
  newtio.c_cflag &= ~PARODD;       
  newtio.c_iflag |= INPCK;      
  break;
 case 'S':
 case 's':    
     newtio.c_cflag &= ~PARENB;
  newtio.c_cflag &= ~CSTOPB;break; 
 default:  
  newtio.c_cflag &= ~PARENB;  
  newtio.c_iflag &= ~INPCK;    
  break;   
 }
 switch (stopbits)
 {  
 case 1:   
  newtio.c_cflag &= ~CSTOPB;  
  break; 
 case 2:   
  newtio.c_cflag |= CSTOPB;  
    break;
 default: 
  newtio.c_cflag &= ~CSTOPB; 
  break; 
 }
 newtio.c_cc[VTIME] = 0;   
 newtio.c_cc[VMIN] = 0;
 newtio.c_cflag   |=   (CLOCAL|CREAD);
 newtio.c_oflag|=OPOST;
 newtio.c_iflag   &=~(IXON|IXOFF|IXANY);                    
    cfsetispeed(&newtio,baudrate);  
    cfsetospeed(&newtio,baudrate);  
    tcflush(fd,   TCIFLUSH);
 if (tcsetattr(fd,TCSANOW,&newtio) != 0)  
 {
  perror("SetupSerial 3"); 
  return -1; 
 } 
 return 0;
}
int readport1(int fd,char *buf,int len,int maxwaittime)
{
 int no=0;int rc;int rcnum=len;
 struct timeval tv;
 fd_set readfd;
 tv.tv_sec=maxwaittime/1000;    
 tv.tv_usec=maxwaittime%1000*1000;  
 FD_ZERO(&readfd);
 FD_SET(fd,&readfd);
 rc=select(fd+1,&readfd,NULL,NULL,&tv);
 sleep(1);
 if(rc>0)
 {
  while(len)
  {
   rc=read(fd,&buf[no],1);
   if(rc>0)
    no=no+1;
   len=len-1;   
  }
  if(no!=rcnum)
   return -1;      
  return rcnum;      
 }
 else
 {
  return -1;
 }
 return -1;
}
//int writeport(int fd,char *buf,int len)  
//{
 //write(fd,buf,len);
//}
void clearport(int fd)      
{
 tcflush(fd,TCIOFLUSH);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -