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

📄 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 COM3 "/dev/ttyS2"
static int fd;
static struct termios oldtio,newtio;
//==初始化串口==================================================
int tty_init()
{
	fd = open(COM3, O_RDWR ); 
	if (fd <0) 
        {
	    	perror(COM3);
	    	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)
{
	int num;
	num = read(fd,buf,nbytes);
	/*for (i=0;i<num;i++)
		{
		printf("%c",buf[i]);
		}
	*/
	return num;
}

//==============================================================
//写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 + -