大型货车超载超速实时检测系统
#include <time.h>nclude <time.h>
//#include <sys/signal.h>
#include <pthread.h>
#include "tty.h"
#include "gprs.h"
/*--------------------------------------------------------*/
#define ENDMINITERM 27 /* ESC to quit miniterm */
#define FALSE 0
#define TRUE 1
/*--------------------------------------------------------*/
volatile int STOP=FALSE;
int GET_GPRS_OK=FALSE;
int baud=B115200;
int get_baudrate(int argc,char** argv);
char * cmd[20]={
"at",
"ate1",
"at+chfa=1", //设置通话通道为1,AT+CHFA 命令切换主副音频通道
"at+clvl=100", //设置受话器音量最大, AT+CLVL 命令可以调节输出音频信号增益
"at+cmic=1,10" //设置通道1的话筒增益
// "atd12345678\r",
};
void * keyshell() ;
/* modem input handler */
void* gprs_show(void * data)
{
while(1)
{
if(GET_GPRS_OK){
GET_GPRS_OK=FALSE;
printf("%s",GPRS_BUF);
GPRS_parse(GPRS_BUF,&gps_info);
GPRS_show();
}
usleep(100);
if(STOP)break;
}
}
/* modem input handler */
void* gprs_read(void * data)
{
int i=0;
char c;
char buf[1024];
printf("\nread modem\n");
while (STOP==FALSE)
{
tty_read(&c,1);
printf("%c",c);
}
printf("exit from reading modem\n");
return NULL;
}
int main(int argc,char** argv)
{
int ok;
pthread_t th_a, th_b, th_show;
void * retval;
if(argc < 2) {
printf (" Default baudrate is 115200 bps. If not, please enter the baudrate as a parameter\n");
}
else
baud=get_baudrate(argc, argv);
tty_init();
pthread_create(&th_a, NULL, keyshell, 0);
pthread_create(&th_b, NULL, gprs_read, 0);
pthread_create(&th_show, NULL, gprs_show, 0);
while(!STOP){
usleep(100000);
}
tty_end();
exit(0);
}
int get_baudrate(int argc,char** argv)
{
int v=atoi(argv[1]);
switch(v){
case 4800:
return B4800;
case 9600:
return B9600;
case 19200:
return B19200;
case 38400:
return B38400;
case 57600:
return B57600;
case 115200:
return B115200;
default:
return -1;
}
}
void gprs_init()
{
int i;
for(i=0; i<5; i++) {
tty_writecmd(cmd[i], strlen(cmd[i]));
}
}
void gprs_hold()
{
tty_writecmd("at", strlen("at"));
tty_writecmd("ath", strlen("ath"));
}
void gprs_ans()
{
tty_writecmd("at", strlen("at"));
tty_writecmd("ata", strlen("ata"));
}
void gprs_call(char *number, int num)
{
tty_write("atd", strlen("atd"));
tty_write(number, num);
tty_write(";\r", strlen(";\r"));
usleep(200000);
}
void gprs_msg(char *number, int num)
{
char ctl[]={26,0};
char text[]="Welcome to use up-tech embedded platform!";
tty_writecmd("at", strlen("at"));
tty_writecmd("at", strlen("at"));
tty_writecmd("at+cmgf=1", strlen("at+cmgf=1"));
tty_write("at+cmgs=", strlen("at+cmgs="));
tty_write("\"", strlen("\""));
tty_write(number, strlen(number));
tty_write("\"", strlen("\""));
tty_write(";\r", strlen(";\r"));
tty_write(text, strlen(text));
tty_write(ctl, 1);
usleep(300000);
}
void gprs_baud(char *baud,int num)
{
tty_write("at+ipr=", strlen("at+ipr="));