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

📄 trans_process.c

📁 通过车载终端采集GPS数据
💻 C
📖 第 1 页 / 共 3 页
字号:
            case 6:
                gprs_info->messagetype = 0xDD;
                break;
                
        }
    
        get_driver_id(gprs_info->driverid);
        gprs_info->mess_head.mess_length = 41;	
        swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
        swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
        sbuf.valid[2] = 1;    
    }        
}

/*文本消息打包*/
void make_text_message(Uchar *ptr, Uchar len_date)
{
    BUS_TEXT *gprs_info;
    GPS_DATA *pgps;
    gprs_info = (BUS_TEXT *) sbuf.buf[2];
    serial_number++;
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(TEXTMESSAGE);
    gprs_info->messageid = serial_number;
    get_gps_data(&pgps);
    memcpy(gprs_info->date, pgps->date, 3);
    memcpy(gprs_info->time, pgps->time, 3);
    get_line_id(&(gprs_info->line_id));
    get_device_id(&(gprs_info->terminal_id));
    get_bus_id(&(gprs_info->bus_id));
    gprs_info->mess_head.mess_length = len_date;
    memcpy(gprs_info->mess_date, ptr, len_date);
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[2] = 1;         
}

/******报警消息打包******/
/*alarmType:报警类型
*alarmValue:报警的值,1有报警;0无报警
**************************/
void make_alarm_message(unsigned char alarmType, unsigned char alarmValue)
{
    Uchar  run_array[3];
    Uchar  *parray;
    GPS_DATA *pgps;
    BUS_ALARM *gprs_info;
    parray = run_array;
    gprs_info = (BUS_ALARM *) sbuf.buf[2];
    serial_number++;
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 4;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(ALARMMESSAGE);
    gprs_info->messageid = serial_number;
    get_term_data(gprs_info->date);
    get_term_time(gprs_info->time);
    get_line_id(gprs_info->line_id);
    get_device_id(gprs_info->terminal_id);
    get_bus_id(gprs_info->bus_id);
    get_cur_runmode(parray);
    if (run_array[0] != 0 )
    {
        get_cur_mode(parray + 1);
        if(run_array[1] >= 1 & run_array[1] <= 8)
        {
            get_cur_direction(parray + 2);
            if(run_array[2] == 0)
            {
                run_array[2]  = 1;
            }
            else
            {
                run_array[2]  = 2;
            }
            gprs_info->runmode = ((run_array[2] << 6) | (run_array[1]));
        }
        else
        {
            gprs_info->runmode = run_array[1];
        }
    }
    else
    {
        gprs_info->runmode = 0;
    }

    get_gps_data(&pgps);
    gprs_info->gps_flag = (pgps->state << 6) & (pgps->numbers);
    gprs_info->longitude = pgps->longitude;
    gprs_info->latitude = pgps->latitude;
    gprs_info->speed = pgps->speed;
    gprs_info->direction = pgps->direction;
    gprs_info->changeStatus = alarmType;
    if (alarmValue)
        gprs_info->alarmStatus = alarmType;
    else
        gprs_info->alarmStatus = 0;
    gprs_info->mess_head.mess_length = 40;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[2] = 1;         
}

extern char testBuf[550];
/*******相片数据组包***************/
/***
nCur:值从1开始
***/
void make_photo_message(Uint16 nTotal, Uint16 nCur, Byte* pnSeq, Byte* pSrcBuf, Uint16 nBufLen)
{
    REMOTE_PHOTOMSG* gprs_info;
    gprs_info = (REMOTE_PHOTOMSG *) sbufPhoto.buf;
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = REMOTE_PHOTO_MESSAGE;
    memcpy(gprs_info->messageid, pnSeq, 4);
    gprs_info->packNum = nTotal;
    gprs_info->curNum = nCur;
    get_bus_id(gprs_info->bus_id);
    memcpy(gprs_info->memo, pSrcBuf, nBufLen);
    gprs_info->mess_head.mess_length = 15+nBufLen;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    swap_uint((Uchar *)(&gprs_info->packNum));
    swap_uint((Uchar *)(&gprs_info->curNum));
    sbufPhoto.valid = 1; 
    
}

/************************************/
/*终端远程更新程序应答的组包函数*/
void make_response_update(Byte* pSrc)
{
    RES_REMOTE_UPDATE* gprs_info;
    gprs_info = (RES_REMOTE_UPDATE *) sbuf.buf[REMOTE_BUFFER_ID];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_UPDATE_PROGRAM);
    memcpy(gprs_info->messageid, pSrc+4, 4);
    gprs_info->type = pSrc[8];
    get_bus_id(gprs_info->bus_id);
    memcpy(&(gprs_info->content), pSrc+9, 6);
    gprs_info->mess_head.mess_length = sizeof(RES_REMOTE_UPDATE)-sizeof(struct _mess_head_info);
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
    sbuf.valid[REMOTE_BUFFER_ID] = 1;
}
/*调度消息应答*/
void res_direct_message(Uchar mess_num[4])
{
    Uchar  *pnum;
    RES_DIREC *gprs_info;
    pnum = mess_num;
    gprs_info = (RES_DIREC *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_DIRECT);
    get_bus_id(gprs_info->bus_id);
    get_line_id(gprs_info->line_id);    
    memcpy(gprs_info->res_messageid, mess_num, 4);
    gprs_info->mess_head.mess_length = 15;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}

/*终端参数配置应答*/
void res_seeconfiguer_message(Uchar mess_num[4])
{
    Uchar  *pnum;
    RES_CONFIGUR *gprs_info;
    pnum = mess_num;
    gprs_info = (RES_CONFIGUR *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_CONFIGURE);      
    memcpy(&(gprs_info->res_messageid), pnum, 4);
    get_device_id(gprs_info->terminal_id);
    get_bus_id(gprs_info->bus_id);
    gprs_info->res_value = 0;
    gprs_info->mess_head.mess_length = 15;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}


/*查询位置信息应答应答*/
void res_seeposition_message(Uchar mess_num[4])
{
    Uchar  *pnum;
    Uchar  run_array[3];
    Uchar  *parray;
    GPS_DATA *pgps;
    RES_SEEPOSITIO *gprs_info;
    parray = run_array;
    pnum = mess_num;
    gprs_info = (RES_SEEPOSITIO *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_SEEPOSITION);      
    memcpy(&(gprs_info->res_messageid), pnum, 4);
    get_device_id(gprs_info->terminal_id);
    get_bus_id(gprs_info->bus_id);
    get_cur_runmode(parray);
    if (run_array[0] != 0 )
    {
        get_cur_mode(parray + 1);
        if(run_array[1] >= 1 & run_array[1] <= 8)
        {
            get_cur_direction(parray + 2);
            if(run_array[2] == 0)
            {
                run_array[2]  = 1;
            }
            else
            {
                run_array[2]  = 2;
            }
            gprs_info->runmode = (run_array[2] << 6) & (run_array[1]);
        }
        else
        {
            gprs_info->runmode = run_array[1];
        }
    }
    else
    { 
        gprs_info->runmode = 0;
    }
    gprs_info->res_value = 0;
    get_cur_direction(&(gprs_info->runmode));
    get_gps_data(&pgps);
    memcpy(gprs_info->date, pgps->date, 3);
    memcpy(gprs_info->time, pgps->time, 3);
    memcpy(&(gprs_info->longitude), &(pgps->longitude), 4);
    memcpy(&(gprs_info->latitude), &(pgps->latitude), 4);
    gprs_info->speed = pgps->speed;
    gprs_info->direction = pgps->direction;
    get_device_id(&(gprs_info->terminal_id));
    get_bus_id(&(gprs_info->bus_id));
    gprs_info->mess_head.mess_length = 15;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}


/*查询终端信息应答应答*/
void res_seeterminal_message(Uchar mess_num[4])
{
    Uchar  *pnum;
    RES_SEETERMINA *gprs_info;
    pnum = mess_num;
    gprs_info = (RES_SEETERMINA *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_SEETERMINAL);      
    memcpy(&(gprs_info->res_messageid), pnum, 4);
    get_device_id(gprs_info->terminal_id);
    get_bus_id(gprs_info->bus_id);
    gprs_info->res_value = 0;
    get_software_version(&(gprs_info->soft_edition));
    gprs_info->mess_head.mess_length = 16;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}

/*远程下载更新应答*/
void res_update_message(Uchar mess_num[4], Uchar rcv_block[2], Uchar type, Uchar up_value )
{
    Uchar  *pnum;
    RES_UPDAT *gprs_info;
    pnum = mess_num;
    gprs_info = (RES_UPDAT *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_UPDATE);      
    memcpy(&(gprs_info->res_messageid), pnum, 4);
    get_device_id(gprs_info->terminal_id);
    get_bus_id(gprs_info->bus_id);
    gprs_info->res_value = up_value;
    memcpy(&(gprs_info->block), rcv_block, 2);/*返回的block*/
    gprs_info->update_type = type;
    gprs_info->mess_head.mess_length = 18;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}

/*查询终端参数配置应答*/
void res_seeconfugure_message(Uchar mess_num[4])
{
    Uchar  *pnum;
    RES_SEECONFIGUR *gprs_info;
    pnum = mess_num;
    gprs_info = (RES_SEECONFIGUR *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_SEECONFIGURE);      
    memcpy(&(gprs_info->res_messageid), pnum, 4);
    get_device_id(gprs_info->terminal_id);
    get_bus_id(gprs_info->bus_id);
    gprs_info->res_value = 0;
    get_online_time(&(gprs_info->heartbeat_interval));/*心跳间隔*/
    get_auto_time(&(gprs_info->potision_interval));/*gps间隔*/
    get_arrive_meter(&(gprs_info->in_distance));/*到站距离*/
    get_left_meter(&(gprs_info->out_distance));/*出站距离*/
    gprs_info->mess_head.mess_length = 20;
    swap_uint((Uchar *)(&(gprs_info->potision_interval)));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}


/**照片拍摄应答**/
void res_photo_message(Uchar* messID)
{
    RES_PHOTOMESSAGE_STR *gprs_info;
    gprs_info = (RES_PHOTOMESSAGE_STR *) sbuf.buf[1];
    memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
    gprs_info->mess_head.mess_version = 2;
    gprs_info->mess_head.mess_reserve = 0;
    gprs_info->mess_head.mess_type = (Word)(RES_PHOTOMESSAGE);      
    memcpy(gprs_info->messID, messID, 4);
    get_bus_id(gprs_info->bus_id);
    gprs_info->mess_head.mess_length = 11;
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
    swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));	
    sbuf.valid[1] = 1;
}

⌨️ 快捷键说明

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