MFC 崩溃dmp查看结果

线程里面socket发送代码如下:
// SocketWinThread.cpp : 实现文件
//
#include "stdafx.h"
#include "KMCarProject.h"
#include "MapWinThread.h"
#include "MapSocket.h"
#include "Global.h"
#include "DBClass.h"
#include "KM3CarProjectDlg.h"
#include "KM2CarProjectDlg.h"
extern CGlobal g_Global;
extern CMapSocket g_MapSocket; //sock连接
CCriticalSection g_socket_cs;
IMPLEMENT_DYNCREATE(CMapWinThread, CWinThread)
CMapWinThread::CMapWinThread()
{
}
CMapWinThread::~CMapWinThread()
{
}
BOOL CMapWinThread::InitInstance()
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
if( InitSocket() == true)
{
LinkTimerID =::SetTimer(NULL, 1, 1000,NULL);
}
return TRUE;
}
int CMapWinThread::ExitInstance()
{
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CMapWinThread, CWinThread)
END_MESSAGE_MAP()
bool CMapWinThread::InitSocket()
{
try
{
CString str;
g_socket_cs.Lock();
BOOL iret=g_MapSocket.Create(0,SOCK_DGRAM);
g_socket_cs.Unlock();
if(!iret)
{
str.Format("地图服务器连接失败: %d", g_MapSocket.GetLastError());
g_Global.MapErrorContent=str;
return false;
}
g_MapSocket.m_SocketState=1;
return true;
}
catch (...)
{
g_socket_cs.Unlock();
g_Global.MapErrorContent="InitSocket 异常错误";
return false;
}
}
bool CMapWinThread::InitRConnect()
{
try
{
if(g_Global.NetStatus==101)
{
return false;
}
CString str;
g_MapSocket.Close();
BOOL iret=g_MapSocket.Create(0,SOCK_DGRAM);
if(!iret)
{
str.Format("地图服务器连接失败: %d", g_MapSocket.GetLastError());
g_Global.MapErrorContent=str;
g_MapSocket.m_SocketState=-1;
return false;
}
g_Global.MapErrorContent="连接地图成功";
g_MapSocket.m_SocketState=1;
return true;
}
catch (...)
{
g_Global.MapErrorContent="InitRConnect 异常错误";
return false;
}
return true;
}
BOOL CMapWinThread::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_TIMER )
{
if(pMsg->wParam ==LinkTimerID)
{
KillTimer(NULL,LinkTimerID);
SendDataID =SetTimer(NULL,1,200,NULL);//400-200
}
else if(pMsg->wParam == ReLinkTimerID)
{
KillTimer(NULL,ReLinkTimerID);
if(InitRConnect() ==false)
{
g_MapSocket.m_SocketState =-1;
ReLinkTimerID =SetTimer(NULL,1,4000*1,NULL);//6s后再检测 6->1
}
else
{
g_Global.MapErrorContent="重连地图成功";
SendDataID =SetTimer(NULL,1,200,NULL);
}
}
else if(pMsg->wParam ==SendDataID)
{
KillTimer(NULL,SendDataID);
if(g_Global.OldGpsContent!=g_Global.NewGpsContent)
{
g_Global.OldGpsContent=g_Global.NewGpsContent;
CString bingcontent="";
try
{
CString signcontent="";
/*signcontent.Format("!%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%.2lf,%s,%d,%s,%s,%s,%s,%d,%d,2,%s,%s,%s,%s,%s,%s,%s",g_Global.m_CarState.FootBrake
,g_Global.m_CarState.ViceBrake,g_Global.m_CarState.HandBrake,g_Global.m_CarState.Horn,g_Global.m_CarState.FrontPass,g_Global.m_CarState.EndPass
,g_Global.m_CarState.WideLamp,g_Global.m_CarState.Engineer,g_Global.m_CarState.BackLamp,g_Global.m_CarState.Clutch,g_Global.m_CarState.GearState
,g_Global.m_CarState.Fire,g_Global.m_CarState.LeftLampOpen,g_Global.m_CarState.RightLampOpen,g_Global.m_CarState.FogLamp,g_Global.m_CarState.FarLamp
,g_Global.m_CarState.NearLamp,g_Global.m_CarState.WiperState,g_Global.m_CarState.SafeBelt,g_Global.m_CarState.DoorLamp,g_Global.m_CarState.GPSSpeed
,g_Global.CarDistance,g_Global.m_CarState.RotateSpeed,g_Global.gps_wxdingweistatus,g_Global.IsProcess,GetAllDateStr(),g_Global.SendStudentSfzhm
,g_Global.m_CarState.WarnLamp,g_Global.CarStopStatus,g_Global.gps_weidu,g_Global.gps_jingdu,g_Global.gps_eastvalue,g_Global.gps_northvalue,
g_Global.gps_fangweijiao,g_Global.gps_fuyangjiao,g_Global.gps_gaodu);*/
CString sFootBrake="";
sFootBrake.Format("%d",g_Global.m_CarState.FootBrake);
CString sViceBrake="";
sViceBrake.Format("%d",g_Global.m_CarState.ViceBrake);
CString sHandBrake="";
sHandBrake.Format("%d",g_Global.m_CarState.HandBrake);
CString sHorn="";
sHorn.Format("%d",g_Global.m_CarState.Horn);
CString sFrontPass="";
sFrontPass.Format("%d",g_Global.m_CarState.FrontPass);
CString sEndPass="";
sEndPass.Format("%d",g_Global.m_CarState.EndPass);
CString sWideLamp="";
sWideLamp.Format("%d",g_Global.m_CarState.WideLamp);
CString sEngineer="";
sEngineer.Format("%d",g_Global.m_CarState.Engineer);
CString sBackLamp="";
sBackLamp.Format("%d",g_Global.m_CarState.BackLamp);
CString sClutch="";
sClutch.Format("%d",g_Global.m_CarState.Clutch);
CString sGearState="";
sGearState.Format("%d",g_Global.MatchGear());
CString sFire="";
sFire.Format("%d",g_Global.m_CarState.Fire);
CString sLeftLampOpen="";
sLeftLampOpen.Format("%d",g_Global.m_CarState.LeftLampOpen);
CString sRightLampOpen="";
sRightLampOpen.Format("%d",g_Global.m_CarState.RightLampOpen);
CString sFogLamp="";
sFogLamp.Format("%d",g_Global.m_CarState.FogLamp);
CString sFarLamp="";
sFarLamp.Format("%d",g_Global.m_CarState.FarLamp);
CString sNearLamp="";
sNearLamp.Format("%d",g_Global.m_CarState.NearLamp);
CString sWiperState="";
sWiperState.Format("%d",g_Global.m_CarState.WiperState);
CString sSafeBelt="";
sSafeBelt.Format("%d",g_Global.m_CarState.SafeBelt);
CString sDoorLamp="";
sDoorLamp.Format("%d",g_Global.m_CarState.DoorLamp);
CString sGPSSpeed="";
sGPSSpeed.Format("%.2lf",g_Global.m_CarState.GPSSpeed);
CString sRotateSpeed="";
sRotateSpeed.Format("%d",g_Global.m_CarState.RotateSpeed);
CString sWarnLamp="";
sWarnLamp.Format("%d",g_Global.m_CarState.WarnLamp);
CString sCarStopStatus="";
sCarStopStatus.Format("%d",g_Global.CarStopStatus);
CString sgps_wxdingweistatus="";
sgps_wxdingweistatus.Format("%d",g_Global.gps_wxdingweistatus);
CString sgps_weidu="";
sgps_weidu.Format("%.2lf",g_Global.gps_weidu);
CString sgps_jingdu="";
sgps_jingdu.Format("%.2lf",g_Global.gps_jingdu);
CString sgps_eastvalue="";
sgps_eastvalue.Format("%.2lf",g_Global.gps_eastvalue);
CString sgps_northvalue="";
sgps_northvalue.Format("%.2lf",g_Global.gps_northvalue);
CString sgps_fangweijiao="";
sgps_fangweijiao.Format("%.2lf",g_Global.gps_fangweijiao);
CString sgps_fuyangjiao="";
sgps_fuyangjiao.Format("%.2lf",g_Global.gps_fuyangjiao);
CString sgps_gaodu="";
sgps_gaodu.Format("%.2lf",g_Global.gps_gaodu);
//!%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%.2lf,%s,%d,%s,%s,%s,%s,%d,%d,2,%s,%s,%s,%s,%s,%s,%s
signcontent="!"+sFootBrake+","+sViceBrake+","+sHandBrake+","+sHorn+","+sFrontPass+","+sEndPass
+","+sWideLamp+","+sEngineer+","+sBackLamp+","+sClutch+","+sGearState
+","+sFire+","+sLeftLampOpen+","+sRightLampOpen+","+sFogLamp+","+sFarLamp
+","+sNearLamp+","+sWiperState+","+sSafeBelt+","+sDoorLamp+","+sGPSSpeed
+","+g_Global.CarDistance+","+sRotateSpeed+","+sgps_wxdingweistatus+","+g_Global.IsProcess+","+GetAllDateStr()+","+g_Global.SendStudentSfzhm
+","+sWarnLamp+","+sCarStopStatus+",2,"+sgps_weidu+","+sgps_jingdu+","+sgps_eastvalue+","+sgps_northvalue+","+
sgps_fangweijiao+","+sgps_fuyangjiao+","+sgps_gaodu;
//!%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%.2lf,%s,%d,%s,%s,%s,%s
g_Global.SendMessageId=(g_Global.SendMessageId)%65535+1;
CString sendxmcontent="";
sendxmcontent=g_Global.SendKsxmStatus;
sendxmcontent.Replace("1-","");
sendxmcontent.Replace("2-","");
sendxmcontent.Replace("3-","");
sendxmcontent.Replace("4-","");
sendxmcontent.Replace("5-","");
sendxmcontent.Replace("6-","");
sendxmcontent.Replace("7-","");
sendxmcontent.Replace("8-","");
sendxmcontent.Replace("9-","");
sendxmcontent.Replace("10-","");
sendxmcontent.Replace("11-","");
sendxmcontent.Replace("12-","");
sendxmcontent.Replace("13-","");
sendxmcontent.Replace("14-","");
sendxmcontent.Replace("15","");
sendxmcontent.Replace("16-","");
sendxmcontent.Replace("17-","");
sendxmcontent.Replace(",","");
CString sendxmingxi="";
sendxmingxi=g_Global.SendKfValueMingxi;
if(sendxmingxi.GetLength()>1)
{
sendxmingxi.Delete(sendxmingxi.GetLength()-1);
}
CString sendkfgpsxuhao="";
sendkfgpsxuhao=g_Global.SendKfValueGpsBh;
if(sendkfgpsxuhao.GetLength()>1)
{
sendkfgpsxuhao.Delete(sendkfgpsxuhao.GetLength()-1);
}
//统计考试过程时间
if(g_Global.IsProcess=="1"||g_Global.IsProcess=="2")//无人开始考试,考试初始化结束
{
g_Global.m_StartTimeTick=GetTickCount();
}
long sumtime=GetTickCount()-g_Global.m_StartTimeTick;
//GPS差分
CString gpschafenstatus="0";
if(g_Global.m_GPSState.GPSFixState==1)
{
gpschafenstatus="1";
}
else
{
gpschafenstatus="2";
}
CString jguancontent="";
CString sSendKfValueSum="";
sSendKfValueSum.Format("%d",g_Global.SendKfValueSum);
CString sSendKfValueCount="";
sSendKfValueCount.Format("%d",g_Global.SendKfValueCount);
CString sSendMessageId="";
sSendMessageId.Format("%ld",g_Global.SendMessageId);
CString ssumtime="";
ssumtime.Format("%ld",sumtime);
jguancontent="&"+sendxmcontent+","+g_Global.SendCurrentXm+","+g_Global.m_CarPlate+","+sSendKfValueSum+","+sSendKfValueCount+","+sendxmingxi+","+g_Global.SendKmType
+","+GetSendTimeDateStr()+","+GetSendTimeDateStr()+","+sSendMessageId+","+g_Global.SendStudentLsh+","+g_Global.SendKsyDabh+","+g_Global.SendKsySfzhm+","+gpschafenstatus
+","+s