📄 测试程序dlg.cpp
字号:
PhoneNumber[14] = dlg.m_PhoneNumber15;
PermitNumber.vehicle_ID = atoi(tempID);
PermitNumber.groupnum = groupnum;
PermitNumber.num = num;
PermitNumber.restrictstatus[0] = restrictstatus[0];
PermitNumber.restrictstatus[1] = restrictstatus[1];
BYTE PhoneNumberLength = 0;
for (int i=0; i<15; i++)
{
PhoneNumberLength = PhoneNumber[i].GetLength();
PermitNumber.phonenum[i].len = PhoneNumberLength;
memcpy(PermitNumber.phonenum[i].num,PhoneNumber[i],PhoneNumberLength);
}
BOOL result = m_active.SetPermitPhonenumber ((VARIANT*)&PermitNumber);
UpdateData(FALSE);
}
//设置超速报警门限
void CMyDlg::OnSuperSpeed()
{
UpdateData(TRUE);
CSuperSpeed dlg;
if (IDOK != dlg.DoModal())
{
return;
}
OVERSPEEDALARMBOUND SpeedAlarm;
memset(&SpeedAlarm,0,sizeof(SpeedAlarm));
CString tempID = m_ID;
CString tempAlarState = dlg.m_AlarmState;
BYTE AlarmState = 0;
tempID.Delete(0,1);
//报警状态是一个十六进制的数,长度必须为2
if (tempAlarState.GetAllocLength() < 2)
{
return;
}
AlarmState = atoi(tempAlarState)/10;
AlarmState <<= 4;
AlarmState += atoi(tempAlarState)%10;
SpeedAlarm.vehicle_ID = atoi(tempID);
SpeedAlarm.boundvalue = dlg.m_SuperSpeed;
SpeedAlarm.alarmstatus = AlarmState;
// TRANSE_TO_VARIANT(((LPOVERSPEEDALARMBOUND)&SpeedAlarm));
BOOL result = m_active.SetOverspeedAlarmbound((VARIANT*)&SpeedAlarm);
// DELETE_VARIANT;
}
//设置车辆运行方向
void CMyDlg::OnRunWay()
{
UpdateData(TRUE);
CRunWay dlg;
if (IDOK != dlg.DoModal())
{
return;
}
MOVINGDIRECTION MovingDirection;
memset(&MovingDirection,0,sizeof(MovingDirection));
CString tempID = m_ID;
tempID.Delete(0,1);
// MovingDirection.busno = 3;
MovingDirection.direction = dlg.RunWay;
MovingDirection.controlmode = dlg.Contrl;
MovingDirection.vehicle_ID = atoi(tempID);
// TRANSE_TO_VARIANT((LPMOVINGDIRECTION)&MovingDirection);
BOOL result = m_active.SetMovingDirection((VARIANT*)&MovingDirection);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置自动报站控制方式
void CMyDlg::OnAutoReport()
{
UpdateData(TRUE);
CAutoReport dlg;
if (IDOK != dlg.DoModal())
{
return;
}
AUTOREPORTCONTROL AutoReport;
memset(&AutoReport,0,sizeof(AutoReport));
CString tempID = m_ID;
tempID.Delete(0,1);
AutoReport.vehicle_ID = atoi(tempID);
AutoReport.controlmode = dlg.ContrlType;
// TRANSE_TO_VARIANT((LPAUTOREPORTCONTROL)&AutoReport);
BOOL result = m_active.SetAutoreportControl((VARIANT*)&AutoReport);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置语音播报信息
void CMyDlg::OnVoiceReport()
{
UpdateData(TRUE);
CMessage dlg;
dlg.WindowCaption = "语音播报";
if (IDOK != dlg.DoModal())
{
return;
}
VOICEREPORT VoiceReport;
memset(&VoiceReport,0,sizeof(VoiceReport));
CString Message = dlg.m_Message;
CString tempID = m_ID;
tempID.Delete(0,1);
BYTE MessLen = Message.GetLength();
VoiceReport.len = MessLen;
VoiceReport.vehicle_ID = atoi(tempID);
memcpy(VoiceReport.voicecontent,Message,MessLen);
// TRANSE_TO_VARIANT((LPVOICEREPORT)&VoiceReport);
BOOL result = m_active.SetVoiceReport((VARIANT*)&VoiceReport);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//中心向车台下发的确认信息
void CMyDlg::OnConfirm()
{
CENTERVERIFY Confirm;
memset(&Confirm,0,sizeof(Confirm));
Confirm.vehicle_ID = 3366193004;
BYTE confirmMess[12] = {0x00, 0x00, 0x23, 0x12, 0x23, 0x11,
0x00, 0x00, 0x00, 0x00, 0x10, 0x1c};
memcpy(Confirm.content,confirmMess,12);
// TRANSE_TO_VARIANT((LPCENTERVERIFY)&Confirm);
m_active.CenterVerify((VARIANT*)&Confirm);
// DELETE_VARIANT;
}
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CMyDlg)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 1 /* SendUnpressOrient */, OnSendUnpressOrientGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 2 /* SendPressOrient */, OnSendPressOrientGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 25 /* UpShortMessage */, OnUpShortMessageGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 3 /* SendVerifyMessage */, OnSendVerifyMessageGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 4 /* WrongOrderMessage */, OnWrongOrderMessageGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 24 /* TestNetwork */, OnTestNetworkGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 5 /* ElecRailAlarm */, OnElecRailAlarmGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 6 /* RequestRailPosition */, OnRequestRailPositionGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 7 /* UrgentAlarm */, OnUrgentAlarmGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 8 /* CallingOrient */, OnCallingOrientGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 9 /* RequestDirection */, OnRequestDirectionGprscontrolctrl1, VTS_PVARIANT)
ON_EVENT(CMyDlg, IDC_GPRSCONTROLCTRL1, 10 /* BlindCompensate */, OnBlindCompensateGprscontrolctrl1, VTS_PVARIANT)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
//非压缩定位信息
void CMyDlg::OnSendUnpressOrientGprscontrolctrl1(VARIANT FAR* unpressorient)
{
UNPRESSORIENT *UnComData;
UnComData = (UNPRESSORIENT*)unpressorient;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u上传定位数据:",UnComData->vehicle_ID);
tempstring.Format(" 时间:%d-%d-%d %d:%d:%d",UnComData->year,\
UnComData->month,UnComData->day,UnComData->hour, \
UnComData->minute,UnComData->second);
RecvdData += tempstring;
ADDView(RecvdData);
tempstring.Format("纬度:%0.6f, 经度:%0.6f;",UnComData->latitudenet,UnComData->longitudenet);
RecvdData = tempstring;
tempstring.Format("速度:%d KM/H,方向:%d度",UnComData->speed,UnComData->direction);
RecvdData += tempstring;
tempstring.Format("时间间隔:%d秒,状态位:%04x",UnComData->interval,UnComData->status);
RecvdData += tempstring;
ADDView(RecvdData);
ADDView("");
}
//压缩定位信息
void CMyDlg::OnSendPressOrientGprscontrolctrl1(VARIANT FAR* pressorient)
{
LPPRESSORIENT ComData = (LPPRESSORIENT)pressorient;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u上传数据:",ComData->vehicle_ID);
tempstring.Format(" 时间:%d-%02d-%02d %02d:%02d:%02d \
时间间隔:%d秒,", \
ComData->year,ComData->month,ComData->day,ComData->hour,\
ComData->minute,ComData->second,ComData->interval);
RecvdData += tempstring;
ADDView(RecvdData);
for (int i=0; i<10; i++)
{
tempstring.Format("%2d: 纬度:%0.6f, 经度:%0.6f;",i+1,ComData->latitudenet[i], \
ComData->longitudenet[i]);
RecvdData = tempstring;
tempstring.Format("速度:%d KM/H,方向:%d度",ComData->speed[i],\
ComData->direction[i]);
RecvdData += tempstring;
tempstring.Format("状态位:%04x",ComData->status[i]);
RecvdData += tempstring;
ADDView(RecvdData);
}
ADDView("");
}
//短消息
void CMyDlg::OnUpShortMessageGprscontrolctrl1(VARIANT FAR* UpShortMessage)
{
LPUPSHORTMESSAGE MessData = (LPUPSHORTMESSAGE)UpShortMessage;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u上传短消息:",MessData->vehicle_ID);
RecvdData += tempstring;
ADDView(RecvdData);
int messlen = MessData->len;
RecvdData = "消息内容:";
for ( int i=0; i<messlen; i++)
{
RecvdData += MessData->message[i];
}
ADDView(RecvdData);
ADDView("");
}
//车台上传接收到正确命令的确认消息
void CMyDlg::OnSendVerifyMessageGprscontrolctrl1(VARIANT FAR* verifymessage)
{
LPVERIFYMESSAGE Verify = (LPVERIFYMESSAGE)verifymessage;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u接收到正确的命令:",Verify->vehicle_ID);
switch(Verify->message[10])
{
case 0x30:
tempstring = "设置定位数据发送时间间隔命令。";
break;
case 0x31:
tempstring = "设置灯的状态命令";
case 0x32:
tempstring = "下传短消息命令";
break;
case 0x33:
tempstring = "修改固定短消息命令";
break;
case 0x34:
tempstring = "设置IP地址命令";
break;
case 0x35:
tempstring = "设置车台ID号码命令";
break;
case 0x36:
tempstring = "设置电子围栏命令";
break;
case 0x37:
tempstring = "设置允许通话号码命令";
break;
case 0x39:
tempstring = "监听命令";
break;
case 0x3A:
tempstring = "设置超速报警门限值命令";
break;
case 0x3B:
tempstring = "设置车辆运行方向命令";
break;
case 0x3C:
tempstring = "设置自动控制方式命令";
break;
case 0X3D:
tempstring = "设置语音信息命令";
break;
default:
break;
}
RecvdData += tempstring;
ADDView(RecvdData);
RecvdData.Format("信息内容:");
for (int i=0; i<Verify->len; i++)
{
tempstring.Format("%02x",Verify->message[i]);
RecvdData += tempstring;
}
ADDView(RecvdData);
ADDView("");
}
//车台上传接收到错误命令的信息
void CMyDlg::OnWrongOrderMessageGprscontrolctrl1(VARIANT FAR* wrongmessage)
{
LPWRONGMESSAGE Wrongmess = (LPWRONGMESSAGE)wrongmessage;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u接收到错误命令:",Wrongmess->vehicle_ID);
switch(Wrongmess->wrong_number)
{
case 0x01:
tempstring = "校验错";
break;
case 0x02:
tempstring = "长度错";
break;
case 0x04:
tempstring = "头尾错误";
break;
case 0x08:
tempstring = "非法命令(无法识别的协议号)";
break;
case 0x10:
tempstring = "车载ID号码错误";
break;
case 0xFF:
tempstring = "未知错误";
break;
default:
break;
}
RecvdData += tempstring;
ADDView(RecvdData);
ADDView("");
}
//测试网络状态
void CMyDlg::OnTestNetworkGprscontrolctrl1(VARIANT FAR* networkstatus)
{
LPTESTWORK NetCheck = (LPTESTWORK)networkstatus;
//显示
CString RecvdData = "";
RecvdData.Format("车台1%u上传网络测试包",NetCheck->vehicle_ID);
ADDView(RecvdData);
ADDView("");
}
//上传电子围栏信息
void CMyDlg::OnElecRailAlarmGprscontrolctrl1(VARIANT FAR* ElecRailAlarm)
{
LPRAILALARM AlarmData = (LPRAILALARM)ElecRailAlarm;
//显示
CString RecvdData = "";
CString tempstring = "";
CTime time = CTime::GetCurrentTime();
RecvdData.Format("车台1%u上传围栏报警。",AlarmData->vehicle_ID);
tempstring.Format(" 时间:%d-%02d-%02d %02d:%02d:%02d", \
time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),\
time.GetMinute(),time.GetSecond());
RecvdData += tempstring;
ADDView(RecvdData);
RecvdData.Format("围栏号:%d",AlarmData->railnum);
switch(AlarmData->alarmstatus)
{
case 0x00:
tempstring = "上行出围栏";
break;
case 0x01:
tempstring = "上行进入围栏";
break;
case 0x10:
tempstring = "下行出围栏";
break;
case 0x11:
tempstring = "下行进入围栏";
break;
default:
break;
}
RecvdData += tempstring;
ADDView(RecvdData);
ADDView("");
}
//车台向中心要围栏的位置信息
void CMyDlg::OnRequestRailPositionGprscontrolctrl1(VARIANT FAR* RequestRailPosition)
{
LPRAILPOSITION ReailPosition = (LPRAILPOSITION)RequestRailPosition;
//显示
CString RecvdData = "";
CString tempstring = "";
CTime time = CTime::GetCurrentTime();
RecvdData.Format("车台1%u要围栏信息。",ReailPosition->vehicle_ID);
tempstring.Format(" 时间:%d-%02d-%02d %02d:%02d:%02d", \
time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),\
time.GetMinute(),time.GetSecond());
RecvdData += tempstring;
ADDView(RecvdData);
RecvdData = "";
if (ReailPosition->framenum > 0)
{
RecvdData.Format("帧数:%d, 帧号:%d",ReailPosition->framenum, \
ReailPosition->frameNO);
}
else if (ReailPosition->framenum == 0)
{
RecvdData.Format("需要全部围栏数据");
}
ADDView(RecvdData);
ADDView("");
}
//车台向中心发送的紧急报警信息
void CMyDlg::OnUrgentAlarmGprscontrolctrl1(VARIANT FAR* UrgentAlarm)
{
LPURGENTALARM UrgAlam = (LPURGENTALARM)UrgentAlarm;
//显示
CString RecvdData = "";
CString tempstring = "";
CTime time = CTime::GetCurrentTime();
RecvdData.Format("车台1%u上传紧急报警。",UrgAlam->vehicle_ID);
tempstring.Format(" 时间:%d-%02d-%02d %02d:%02d:%02d", \
time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),\
time.GetMinute(),time.GetSecond());
RecvdData += tempstring;
ADDView(RecvdData);
RecvdData = "";
if (UrgAlam->alarmtype == 0x00)
{
RecvdData.Format("紧急报警");
}
else if (UrgAlam->alarmtype == 0x01)
{
RecvdData.Format("超速报警");
}
ADDView(RecvdData);
ADDView("");
}
//提取点名定位信息
void CMyDlg::OnCallingOrientGprscontrolctrl1(VARIANT FAR* callingorientinfo)
{
LPCALLINGORIENT CallingData = (LPCALLINGORIENT)callingorientinfo;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u上传点名定位数据:",CallingData->vehicle_ID);
tempstring.Format(" 时间:%d-%d-%d %d:%d:%d", \
CallingData->year,CallingData->month,CallingData->day, \
CallingData->hour,CallingData->minute,CallingData->second);
RecvdData += tempstring;
ADDView(RecvdData);
tempstring.Format("纬度:%0.6f, 经度:%0.6f;",CallingData->latitudenet, \
CallingData->longitudenet);
RecvdData = tempstring;
tempstring.Format("速度:%d KM/H,方向:%d度",CallingData->speed, \
CallingData->direction);
RecvdData += tempstring;
tempstring.Format("时间间隔:%d秒,状态位:%04x",CallingData->interval, \
CallingData->status);
RecvdData += tempstring;
ADDView(RecvdData);
ADDView("");
}
//车台向中心请求设置运行方向
void CMyDlg::OnRequestDirectionGprscontrolctrl1(VARIANT FAR* RequestDirection)
{
LPREQUESTDRIECTION ReuestDirection = (LPREQUESTDRIECTION)RequestDirection;
//显示
CString RecvdData = "";
CString tempstring = "";
CTime time = CTime::GetCurrentTime();
RecvdData.Format("车台1%u请求设置运行方向:",ReuestDirection->vehicle_ID);
tempstring.Format(" 时间:%d-%d-%d %d:%d:%d", \
time.GetYear(),time.GetMonth(),time.GetDay(), \
time.GetHour(),time.GetMinute(),time.GetSecond());
RecvdData += tempstring;
ADDView(RecvdData);
ADDView("");
}
//车台向中心上传的盲区补偿数据包
void CMyDlg::OnBlindCompensateGprscontrolctrl1(VARIANT FAR* blindcompensatedata)
{
LPBLINDCOMPENSATE BlindData = (LPBLINDCOMPENSATE)blindcompensatedata;
//显示
CString RecvdData = "";
CString tempstring = "";
RecvdData.Format("车台1%u上传数据:",BlindData->vehicle_ID);
tempstring.Format(" 时间:%d-%02d-%02d %02d:%02d:%02d \
时间间隔:%d秒,", \
BlindData->year,BlindData->month,BlindData->day,BlindData->hour,\
BlindData->minute,BlindData->second,BlindData->interval);
RecvdData += tempstring;
ADDView(RecvdData);
for (int i=0; i<10; i++)
{
tempstring.Format("%2d: 纬度:%0.6f, 经度:%0.6f;",i+1,BlindData->latitudenet[i], \
BlindData->longitudenet[i]);
RecvdData = tempstring;
tempstring.Format("速度:%d KM/H,方向:%d度",BlindData->speed[i],\
BlindData->direction[i]);
RecvdData += tempstring;
tempstring.Format("状态位:%04x",BlindData->status[i]);
RecvdData += tempstring;
ADDView(RecvdData);
}
ADDView("");
}
//在列表中显示数据
void CMyDlg::ADDView(CString Data)
{
UpdateData(TRUE);
m_List.InsertItem(ViewCount++,Data);
m_List.Scroll(sizes);
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -