📄 gsmmodem.cpp
字号:
// char mapname[50],lvlname[21];
// for(int i=0;i < nFileNameLength;i++)
// {
// int j;
// if(cFileName[i]=='_')
// {
// for(j=0;j<i;j++)
// {
// mapname[j]=cFileName[j];
// }
// mapname[i]=0;
//
// type=JudgeMapType(cFileName,i+1);
//
// for(j=i+2;j<nFileNameLength;j++)//?
// {
// lvlname[j-i-2]=cFileName[j];
// }
// int k=j-i-2;
// for(k;k<21;k++)
// {
// lvlname[k]=0;
// }
// break;
// }
// }
//
// //保存所有的数据到文件中
// int nFileCountLength;
// char* pMemData=NULL;
// //写入数据
// nFileCountLength = GetAllMsg(pMemData,nMsgIndex);
//
// //打开lvl文件,加入新图层
// CString fileName;//子目录名或文件名
// CFile tempfile;
//
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T(".lvl");
// int ContentNo=0;
// //int tempNumm=0;
//
// if(tempfile.Open(fileName,CFile::modeReadWrite) == NULL)//新的文件
// {
// tempfile.Open(fileName,CFile::modeReadWrite|CFile::modeCreate);
// }
// else
// {
// char Content[21];
// tempfile.Read(&ContentNo,sizeof(int));
// int num;
// for(i=0;i<ContentNo;i++)
// {
// tempfile.Read(&num,sizeof(int));
// tempfile.Read(Content,sizeof(char)*21);
// if(strcmp(Content,lvlname)==0)
// {
// tempfile.Close();
// goto lable1;
// }
//
// }
// }
//
// ContentNo++;
// tempfile.SeekToBegin();
// tempfile.Write(&ContentNo,sizeof(int));
// tempfile.SeekToEnd();
// tempfile.Write(&ContentNo,sizeof(int));
// tempfile.Write(lvlname,sizeof(char)*21);
// tempfile.Close();
//
// //产生PLA数据文件
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T("_P");
// fileName+=lvlname;
// fileName+=_T(".dat");
// tempfile.Open(fileName,CFile::modeCreate|CFile::modeReadWrite);
// tempfile.Close();
//
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T("_L");
// fileName+=lvlname;
// fileName+=_T(".dat");
// tempfile.Open(fileName,CFile::modeCreate|CFile::modeReadWrite);
// //tempfile.Write(&tempNumm,sizeof(int));
// tempfile.Close();
//
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T("_A");
// fileName+=lvlname;
// fileName+=_T(".dat");
// tempfile.Open(fileName,CFile::modeCreate|CFile::modeReadWrite);
// //tempfile.Write(&tempNumm,sizeof(int));
// tempfile.Close();
//
//
//lable1:
// //判断要素的类型
// switch(type)
// {
// case 0:
// {
//
// CFile PointRecordFile;
// struct tagPointRecord PointRecord;
// int num;
//
// //坐标纪录
// CString fileName;
//
// //为记录路径的根目录赋值
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T("_P");
// fileName+=lvlname;
// fileName+=_T(".dat");
//
// PointRecordFile.Open(fileName,CFile::modeReadWrite);
///*
// num=PointRecordFile.GetLength()/sizeof(tagPointRecord);//已纪录的数据点数
// PointRecordFile.SeekToEnd();//从最后位置开始记录增长文件,无用
// PointRecord.ZbID=num+1;
//*/
//
// //lwgboy 2003-12-18
//
// num=PointRecordFile.GetLength()/sizeof(tagPointRecord);
// if(num>0)
// {
// PointRecordFile.Seek(-sizeof(tagPointRecord),CFile::end);
// PointRecordFile.Read(&num,sizeof(int));
// }
// num++;
// PointRecord.ZbID=num;
// PointRecordFile.SeekToEnd();
//
//
//
// ComPointRecord tempRecord;
//
// memcpy(&tempRecord,pMemData,sizeof(ComPointRecord));
//
// TCHAR* tempchar=new TCHAR[tempRecord.Length+1];
// for(int i=0;i<tempRecord.Length+1;i++)
// tempchar[i]=0;
//
// memcpy(tempchar,pMemData+sizeof(ComPointRecord),tempRecord.Length);
//
// tagBL tempBL;
//
// memcpy(&tempBL,pMemData+sizeof(ComPointRecord)+tempRecord.Length,8);
//
//
// PointRecord.ZbL=tempBL.ZbL;//经度
// PointRecord.ZbB=tempBL.ZbB;//纬度
// PointRecord.ZbSX=tempRecord.ZbSX;
//
// for(int t=0;t<tempRecord.Length+1;t++)
// {
// PointRecord.Info[t]=tempchar[t];
// }
// delete tempchar;
//
// PointRecordFile.Write(&PointRecord,sizeof(PointRecord));
//
// PointRecordFile.Close();
//
// }
// break;
// case 2:
// {
//
// CFile AreaRecordFile;
// struct tagAreaRecord AreaRecord;
// CFile fp;
// CString name;
//
// CString fileName;
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T("_A");
// fileName+=lvlname;
// fileName+=_T(".dat");
//
// int num=0;
// AreaRecordFile.Open(fileName,CFile::modeReadWrite);
// AreaRecordFile.Read(&num,sizeof(int));
// num++;
//
// AreaRecordFile.SeekToBegin();
// AreaRecordFile.Write(&num,sizeof(int));
//
// ComAreaRecord tempRecord;
// memcpy(&tempRecord,pMemData,sizeof(ComAreaRecord));
//
// for(int t=0;t<128;t++)
// AreaRecord.Info[t]=0;
//
// if (tempRecord.Length > 0)
// {
// TCHAR* tempchar=new TCHAR[tempRecord.Length+1];
//
// for(int i=0;i<tempRecord.Length+1;i++)
// tempchar[i]=0;
//
// memcpy(tempchar,pMemData+sizeof(ComAreaRecord),tempRecord.Length);
//
// for(t=0;t<tempRecord.Length+1;t++)
// AreaRecord.Info[t]=tempchar[t];
//
// delete tempchar;
// }
//
//
// AreaRecord.ZbOffset=AreaRecordFile.GetLength()+sizeof(tagAreaRecord);
// AreaRecord.ZbNum=tempRecord.ZbNum;
// AreaRecord.ZbID=num;
// AreaRecord.ZbSX=tempRecord.ZbSX;
//
// AreaRecord.ZbMaxL=tempRecord.ZbMaxL;//经度
// AreaRecord.ZbMaxB=tempRecord.ZbMaxB;//纬度
// AreaRecord.ZbMinL=tempRecord.ZbMinL;//经度
// AreaRecord.ZbMinB=tempRecord.ZbMinB;//纬度
//
// AreaRecordFile.SeekToEnd();//从最后位置开始记录增长文件
// AreaRecordFile.Write(&AreaRecord,sizeof(tagAreaRecord));
//
// tagBL tempBL;
//
// for(i=0;i<tempRecord.ZbNum;i++)
// {
// struct tagBL pointBL;
// memcpy(&tempBL,pMemData+sizeof(ComAreaRecord)+
// tempRecord.Length+sizeof(tagBL)*i,sizeof(tagBL));
//
// pointBL.ZbL=tempBL.ZbL;//经度
// pointBL.ZbB=tempBL.ZbB;//纬度
// AreaRecordFile.Write(&pointBL,sizeof(tagBL));
// }
// AreaRecordFile.Close();
// }
//
// break;
// case 1:
// {
// CFile LineRecordFile;
// struct tagAreaRecord LineRecord;
// CFile fp;
// CString name;
//
// CString fileName;
// fileName=g_SysStatus->strCurDirect;
// fileName+=_T("\\record\\Data\\");
// fileName+=mapname;
// fileName+=_T("_L");
// fileName+=lvlname;
// fileName+=_T(".dat");
//
// int num=0;
// LineRecordFile.Open(fileName,CFile::modeReadWrite);
// LineRecordFile.Read(&num,sizeof(int));
// num++;
//
// LineRecordFile.SeekToBegin();
// LineRecordFile.Write(&num,sizeof(int));
//
// ComLineRecord tempRecord;
// memcpy(&tempRecord,pMemData,sizeof(ComLineRecord));
//
// for(int t=0;t<128;t++)
// LineRecord.Info[t]=0;
//
// LineRecord.ZbOffset=LineRecordFile.GetLength()+sizeof(tagLineRecord);
// LineRecord.ZbNum=tempRecord.ZbNum;
// LineRecord.ZbID=num;
// LineRecord.ZbSX=tempRecord.ZbSX;
//
// if (tempRecord.Length > 0)
// {
// TCHAR* tempchar=new TCHAR[tempRecord.Length+1];
//
// for(int i=0;i<tempRecord.Length+1;i++)
// tempchar[i]=0;
//
// memcpy(tempchar,pMemData+sizeof(ComAreaRecord),tempRecord.Length);
//
// for(int t=0;t<tempRecord.Length+1;t++)
// LineRecord.Info[t]=tempchar[t];
//
// delete tempchar;
// }
//
// LineRecord.ZbMaxL=tempRecord.ZbMaxL;//经度
// LineRecord.ZbMaxB=tempRecord.ZbMaxB;//纬度
// LineRecord.ZbMinL=tempRecord.ZbMinL;//经度
// LineRecord.ZbMinB=tempRecord.ZbMinB;//纬度
//
// LineRecordFile.SeekToEnd();//从最后位置开始记录增长文件
// LineRecordFile.Write(&LineRecord,sizeof(tagLineRecord));
//
// tagBL tempBL;
//
// for(i=0;i<tempRecord.ZbNum;i++)
// {
// struct tagBL pointBL;
// memcpy(&tempBL,pMemData+sizeof(ComLineRecord)+
// tempRecord.Length+sizeof(tagBL)*i,sizeof(tagBL));
//
// pointBL.ZbL=tempBL.ZbL;//经度
// pointBL.ZbB=tempBL.ZbB;//纬度
// LineRecordFile.Write(&pointBL,sizeof(tagBL));
// }
//
// LineRecordFile.Close();
//
//
// }
// break;
// default:
// break;
// }
// delete pMemData;
// nReturn = 2;
//
// }
//// ::AfxMessageBox("短消息接受成功");
// }
return nReturn;
}
//根据图层名称判断该要素是点,线,面
//点=0,线=1,面=2;
int CGsmModem::JudgeMapType(char* strname,int i)
{
CString str(strname);
if(str.Mid(i,1)=="A")
return 2;
if(str.Mid(i,1)=="L")
return 1;
if(str.Mid(i,1)=="P")
return 0;
return 0;
}
//所有的短消息已经传送
BOOL CGsmModem::GetMsgComplete(int nMsgIndex)
{
for(int i = 0; i < m_SaveMsg[nMsgIndex].nCount; i++)
{
if (!m_SaveMsg[nMsgIndex].bAccess[i])
{
return FALSE;
}
}
return TRUE;
}
//得到所有的字符串
int CGsmModem::GetAllMsg(char* &pChar,int nMsgIndex)
{
int nCount = 0;
for(int i = 0; i < m_SaveMsg[nMsgIndex].nCount; i++)
{
nCount += m_SaveMsg[nMsgIndex].nLength[i];
}
pChar = new char[nCount];
nCount = 0;
for(i = 0; i < m_SaveMsg[nMsgIndex].nCount; i++)
{
memcpy(pChar+nCount,m_SaveMsg[nMsgIndex].msg[i],m_SaveMsg[nMsgIndex].nLength[i]);
nCount += m_SaveMsg[nMsgIndex].nLength[i];
delete m_SaveMsg[nMsgIndex].msg[i];
m_SaveMsg[nMsgIndex].msg[i]=NULL;
}
m_SaveMsg[nMsgIndex].nFlag=-1;
return nCount;
}
void CGsmModem::ReleateMsg(int nMsgIndex)
{
for(int i = 0; i < m_SaveMsg[nMsgIndex].nCount; i++)
{
if(m_SaveMsg[nMsgIndex].msg[i])
delete m_SaveMsg[nMsgIndex].msg[i];
}
m_SaveMsg[nMsgIndex].nCount = -1;
m_SaveMsg[nMsgIndex].nFlag = -1;
}
int CGsmModem::ReadMsgFromSIMX(int nMsgIndex, char *pReadPool)
{
return ReadMsgFromSIM(nMsgIndex,pReadPool);
}
SHORTMSGINFO* CGsmModem::getAllSMS()
{
int nTimeOut=0;
int nDataLen=0;
char pAtCmd[64];
int nReturn=0;
strcpy(pAtCmd,"AT+CMGL");
strcat(pAtCmd,"\r");
ClearCommBuf(0);
SendATCmd(pAtCmd);
while(nTimeOut<200)
{
DelayTimer(300);
nDataLen=GetCommEvent(0);
if(nDataLen>0)
{
ReadDataFromPort(m_pReadPool,nDataLen,1);
if(strstr(m_pReadPool,"OK")!=NULL)
{
nReturn=1;
break;
}
ClearCommBuf(0);
SendATCmd(pAtCmd);
}
nTimeOut++;
}
DecodeShortMsg(m_pReadPool,1);
return m_pShortMsgInfo;
}
int CGsmModem::WriteComm(const char*pWritePool,long nWriteLen)
{
return WriteDataToPort(pWritePool,nWriteLen);
}
int CGsmModem::ReadComm(char *pReadPool,long nReadLen)
{
return ReadDataFromPort(pReadPool,nReadLen,0);
}
long CGsmModem::ReadLong(char *pPool)
{
long lNumber=0;
memcpy(&lNumber,pPool,sizeof(long));
return lNumber;
}
double CGsmModem::ReadDouble(char *pPool)
{
double dNumber=0.0;
memcpy(&dNumber,pPool,sizeof(double));
return dNumber;
}
double CGsmModem::ReadChar(char *pPool)
{
char cNumber=0.0;
memcpy(&cNumber,pPool,sizeof(char));
return cNumber;
}
CGsmModem g_GsmModem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -