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

📄 init_port.c

📁 这是在linux下利用GPS MODERM通过串口进行短信发送的源代码
💻 C
字号:
#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>#include "send.h"int speed_arr[] = { B57600, B38400, B19200, B9600, B4800, 			B57600, B38400, B19200, B9600, B4800, };int name_arr[] = { 57600, 38400, 19200, 9600, 4800,			57600, 38400, 19200, 9600, 4800, };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 )			{				elog( "tcsetattr fd error\n" );				return;			}			tcflush( fd, TCIOFLUSH );		}	}}int set_Parity( int fd, int databits, int stopbits, int parity ){	struct termios options;	if( tcgetattr( fd, &options ) != 0 )	{		elog( "Tcgetattr error" );		return -1;	}	options.c_cflag &= ~CSIZE;	switch( databits )	{		case 7:			options.c_cflag |=CS7;			break;		case 8:			options.c_cflag |=CS8;			break;		default:			printf( "unsupported data size\n" );			return -1;	}		switch( parity )	{		case 'n':		case 'N':			options.c_cflag &= ~PARENB;			options.c_iflag &= ~INPCK;			break;		case 'o':		case 'O':			options.c_cflag |= ( PARODD | PARENB );			options.c_iflag |= INPCK;			break;		case 'e':		case 'E':			options.c_cflag |= PARENB;			options.c_cflag &= ~PARODD;			options.c_iflag |= INPCK;			break;		case 's':		case 'S':			options.c_cflag &= ~PARENB;			options.c_cflag &= ~CSTOPB;			break;		default:			printf( "unsupported data size\n" );			return -1;	}	switch( stopbits )	{		case 1:			options.c_cflag &= ~CSTOPB;			break;		case 2:			options.c_cflag |= CSTOPB;			break;		default:			printf( "unsupported data size\n" );			return -1;	}	if( parity != 'n' )		options.c_iflag |= INPCK;	tcflush( fd, TCIFLUSH );	//options.c_cflag |= ( CLOCAL | CREAD );	options.c_lflag &= ~( ICANON | ECHO | ECHOE | ISIG );	options.c_oflag &= ~OPOST;	options.c_cc[VTIME] = 15;	options.c_cc[VMIN] = 0;	if( tcsetattr( fd, TCSANOW, &options ) != 0 )	{		elog( " Tcsetattr error\n" );		return -1;	}	return 1;}main(){	int	fd;	char	smsstr[202];	struct  termios options;	fd = OpenDev( PORT );	Set_speed( fd, SPEED );	if( set_Parity( fd, 8, 1, 'N' ) == -1 )	{		elog( "Set parity error\n" );		exit( 1 );	}	printf( "初始化串口和MODERM成功\n" );	sprintf( smsstr, "AT+CMGF=0\r" );	write( fd, smsstr, strlen(smsstr) );	close( fd );}

⌨️ 快捷键说明

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