📄 serial.c
字号:
#include "CommSerial.h"
#include "global.h"
#include "stdio.h"
#include "syslog.h"
#include "wcommon.h"
//#include "stderr.h"
//////////////////////////////////////////////////////////////////////////
typedef struct
{
char devname[128];
int baudrate;
int flag;
char at[32];
}w_option_t;
static w_option_t g_para;
//////////////////////////////////////////////////////////////////////////
// receive data from use serial port
void OnReceive(void* userData, BYTE* rcvData, int len)
{
printf( "Rcv: %s", rcvData );
Print( "Rcv: %s", rcvData );
}
// open usb serial port
int OpenSerial( char *commPara ) // commPara[] = "/dev/usb/acm/0,460800,8,1,n";
{
char buf[1024];
int ret;
SERIALPORT sp = {0};
if ( commPara==NULL )
return -1;
if (0 != (ret = ParseSerialCommParaStr(commPara, &sp)))
{
Err( "ParseSerialCommParaStr error, ret=%d\n", ret );
return -2;
}
Pt( "baudrate: %d, com: %s, databits: %d, parity: %c, stopbits: %d\n",
sp.baudrate, sp.scom, sp.databits, sp.parity, sp.stopbits );
if (0 != (ret = SerialPortOpen(&sp, OnReceive, NULL, 0)))
{
Err( "open error ret=%d\n", ret );
SerialPortClose();
return -3;
}
return 0;
}
int Init(void)
{
int ret;
// open usb serial port
char para[256] = "";
sprintf( para, "%s,%d,8,1,n", g_para.devname, g_para.baudrate );
ret = OpenSerial( para );
if ( ret<0 )
{
Err("OpenSerial: ret=%d\n", ret);
return -1;
}
// open debug serial port
return 0;
}
int ParseArgu( int argc, char * argv[] )
{
if ( argc<1 || argv==NULL )
{
Err( "para too less or error.\n" );
return -1;
}
if ( argc == 1 ) {
g_para.flag = 1;
strcpy( g_para.at, "at+cfun=0,0" );
strcpy( g_para.devname, "/dev/usb/tts/1" );
g_para.baudrate = atoi( "115200" );
return 0;
}
strcpy( g_para.devname, argv[0] );
//argv++;
g_para.baudrate = atoi( argv[1] );
if ( argc == 3 ) {
g_para.flag = 1;
strcpy( g_para.at, argv[2] );
}
return 0;
}
// Command line: serial /dev/usb/tts/0 9600
// Command line: serial /dev/usb/tts/0 115200 at+creg?
// Command line: serial shut
int main( int argc, char * argv[] )
{
int ret;
// parse Arguments
ret = ParseArgu( --argc, ++ argv );
if ( ret<0 )
{
Err("ParseArgu error, ret=%d\n", ret);
return -1;
}
// open debug serial port & usb serial port
if ( (ret=Init()) < 0 )
{
Err("Init error, ret=%d\n", ret);
return -2;
}
// receive data
char data[256];
printf("Open serial success.\nInput exit to quit program.\n");
sleep(1 );
if ( g_para.flag ) {
strcat( g_para.at, "\r\n" );
printf( "at: %s", g_para.at );
Print( "at: %s", g_para.at );
if (0 >= (ret = SerialPortSend( g_para.at, strlen(g_para.at) )) )
{
Err( "Send error ret=%d\n", ret );
Print( "Send error ret=%d\n", ret);
SerialPortClose();
return 0;
//break;
}
sleep( 5 );
printf( "At send ok\n" );
Print( "At send ok" );
SerialPortClose();
return 0;
}
while (1)
{
//printf("input: ");
scanf( "%s", data );
if ( strcmp(data, "exit")==0 )
break;
strcat( data, "\r\n" );
if (0 >= (ret = SerialPortSend( data, strlen(data) )) )
{
Err( "Send error ret=%d\n", ret );
//break;
}
}
SerialPortClose();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -