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

📄 tty.c

📁 基于minigui的手机界面程序开发 实现简单的计数器功能
💻 C
字号:
/************************************************
 *  TTY SERIAL ROUTES 
 *  use ttyS1 to ctrol GPRS
 *  by Zou jian guo <ah_zou@163.com>   
 *  2004-11-02
 *  
 *  edited by wbin <wbinbuaa@163.com>
 *  2005-01-19
 *  
*************************************************/
#include <sys/types.h>                                                  
#include <sys/stat.h>                                                      
#include <fcntl.h>                                                       
#include <termios.h>                                                    
#include <stdio.h>    

#define BAUDRATE B9600		//默认波特率
//#define BAUDRATE B115200

#define COM1 "/dev/ttyS0"
#define COM2 "/dev/ttyS2"

static int fd;
static struct termios oldtio,newtio;

//==============================================================
int tty_init()
{
	fd = open(COM2, O_RDWR ); 
	if (fd <0) {
	    	perror(COM2);
	    	exit(-1);
  	}
	
  	tcgetattr(fd,&oldtio); 		//保存当前设置
	bzero(&newtio, sizeof(newtio)); 

	newtio.c_cflag = BAUDRATE | /*CRTSCTS |*/ CS8 /*| CLOCAL | CREAD */;
	newtio.c_iflag = IGNPAR | ICRNL; 
	newtio.c_oflag = 0; 
	newtio.c_lflag = ICANON;

	 newtio.c_cc[VINTR]    = 0;     /* Ctrl-c */  
	 newtio.c_cc[VQUIT]    = 0;     /* Ctrl-\ */ 
	 newtio.c_cc[VERASE]   = 0;     /* del */ 
	 newtio.c_cc[VKILL]    = 0;     /* @ */ 
	 newtio.c_cc[VEOF]     = 4;     /* Ctrl-d */ 
	 newtio.c_cc[VTIME]    = 0;     /* 不使用分割字元组的计时器 */ 
	 newtio.c_cc[VMIN]     = 1;     /* 在读取到 1 个字元前先停止 */ 
	 newtio.c_cc[VSWTC]    = 0;     /* '\0' */ 
	 newtio.c_cc[VSTART]   = 0;     /* Ctrl-q */  
	 newtio.c_cc[VSTOP]    = 0;     /* Ctrl-s */ 
	 newtio.c_cc[VSUSP]    = 0;     /* Ctrl-z */ 
	 newtio.c_cc[VEOL]     = 0;     /* '\0' */ 
	 newtio.c_cc[VREPRINT] = 0;     /* Ctrl-r */ 
	 newtio.c_cc[VDISCARD] = 0;     /* Ctrl-u */ 
	 newtio.c_cc[VWERASE]  = 0;     /* Ctrl-w */ 
	 newtio.c_cc[VLNEXT]   = 0;     /* Ctrl-v */ 
	 newtio.c_cc[VEOL2]    = 0;     /* '\0' */ 

 	tcflush(fd, TCIFLUSH);
	tcsetattr(fd,TCSANOW,&newtio);	//设置新参数

	return 0;
}

//==============================================================
//读gprs串口数据
int tty_read(char *buf,int nbytes)
{
	return read(fd,buf,nbytes);
}

//==============================================================
//写gprs串口数据
int tty_write(char *buf,int nbytes)
{
	int i;
	for(i=0; i<nbytes; i++) {
		write(fd,&buf[i],1);
		usleep(100);
	}
	
	//等待所有输出都被发送
	return tcdrain(fd);		
}

//==============================================================
//写gprs串口命令
int tty_writecmd(char *buf,int nbytes)
{
	int i;
	for(i=0; i<nbytes; i++) {
		write(fd,&buf[i],1);
		usleep(100);
	}
	write(fd,"\r",1);	
	usleep(300000);
	
	//等待所有输出都被发送
	return tcdrain(fd);
}

//==============================================================
//恢复并关闭gprs串口
int tty_end()
{
	//恢复旧设置
  	tcsetattr(fd,TCSANOW,&oldtio);	 
  		
  	//关闭串口
  	close(fd);		
	
}

⌨️ 快捷键说明

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