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

📄 serial.cpp

📁 linux 环境下GPRS通信
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<termios.h>
#include<errno.h>


int speed_arr[] = { B57600, B38400, B19200, B9600, B4800, B2400, B1200, 
			B300, B57600, B38400, B19200, B9600, B4800, B2400, B1200, B300, };
int name_arr[] = {57600, 38400, 19200, 9600, 4800, 2400, 1200, 300,
	    57600, 38400, 19200, 9600, 4800, 2400, 1200, 300, };
	    
void set_speed(int fd, int speed)
{
	int   i;
	int   status;	
	struct termios   Opt;
	tcgetattr(fd, &Opt);
	for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++)
	{
		if  (speed == name_arr[i])
		{
			tcflush(fd, TCIOFLUSH);
			cfsetispeed(&Opt, speed_arr[i]);
			cfsetospeed(&Opt, speed_arr[i]);
			status = tcsetattr(fd, TCSANOW, &Opt);
			if  (status != 0)
				perror("tcsetattr fd1");
			return;
		}
		tcflush(fd,TCIOFLUSH);
	}
}


int set_Parity(int fd,int databits,int stopbits,int parity, int timeout)
{
	struct termios options;
	if( tcgetattr( fd,&options)  !=  0)
	{
		perror("SetupSerial 1");
		return -1;
	}
  
  
  options.c_cflag &= ~CSIZE;
  switch (databits) /*璁剧疆鏁版嵁浣嶆暟*/
  {
  	case 7:
  		options.c_cflag |= CS7;
  		break;
  	case 8:
			options.c_cflag |= CS8;
			break;
		default:
			fprintf(stderr,"Unsupported data size\n");
			return -1;
	}
  switch (parity)
  {
  	case 'n':
		case 'N':
			options.c_cflag &= ~PARENB;   /* Clear parity enable */
			options.c_iflag &= ~INPCK;     /* Enable parity checking */
			break;
		case 'o':
		case 'O':
			options.c_cflag |= (PARODD | PARENB);  /* 璁剧疆涓哄

⌨️ 快捷键说明

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