大型货车超载超速实时检测系统

时间:2014-04-18来源:网络

4.3 GPRS模块

ARM将收集到的重量和速度信号经过处理之后,如果货车超载或者超速就将相关的货车信息(车牌号,超速超重多少等)传送到GPRS模块,通过GPRS传送到主服务器上,主程序程序流程图如图4.9:

/************************************************

* GPRS demo, use ppp to connect internet

* use ttyS1 to ctrol GPRS

* by Zou jian guo ah_zou@163.com>

* 2004-11-02

*************************************************/

#include termios.h>

#include stdio.h>

#include unistd.h>

#include fcntl.h>

#include 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的话筒增益

// atd12345678r,

};

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 modemn);

while (STOP==FALSE)

{

tty_read(c,1);

printf(%c,c);

}

printf(exit from reading modemn);

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 parametern);

}

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; i5; 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=));

tty_writecmd(baud, strlen(baud) );

usleep(200000);

}

1 2 3 4 5 6 7 8 9 10 11 12 13

关键词: 超载检测 超速检测 霍尔开关 ARM9

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版