📄 gsmmodem.h
字号:
// GsmModem.h: interface for the CGsmModem class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GSMMODEM_H__E333627F_0954_4F97_81FD_CB87A93D3E0A__INCLUDED_)
#define AFX_GSMMODEM_H__E333627F_0954_4F97_81FD_CB87A93D3E0A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "gsmprotocol.h"
//定义发送短消息的类型
#define M_MSGDATA 0X15 //数据短消息
#define M_MSGUCS2 0X08 //UCS2格式
//通讯用到的参数
#define M_ERROR '4' //命令错误
#define M_MSGPACKLEN 132 //短消息数据包的长度
#define M_READBUFLEN 1024
#define M_WRITEBUFLEN 1024
#define M_MAXMSGNUMBER 10 //同时最多支持的客户端数目
//定义短消息
typedef struct
{
int nMsgType;//短消息的类型
int nMsgLen;//短消息的长度
char pSrcPhoneNum[16];//原地址
char pTime[16];//时间
char MsgData[160];//短消息的内容
int nRecInfo;//1为短消息发送成功,2为有电话呼入, 3为挂断,4已接通
SHORTMSGINFO()
{
nMsgType = 0;
nMsgLen = 0;
nRecInfo = 0;
memset(pSrcPhoneNum, 16, 0);
memset(pTime, 16, 0);
memset(MsgData, 160, 0);
};
}SHORTMSGINFO;
typedef struct
{
long nFlag; //属于同一个短消息发送的消息标志
int nCount; //短消息数目
int nLength[10]; //每条短消息的长度
char* msg[10]; //保存100条短消息的数据
BOOL bAccess[10]; //已经接受到了短消息为TRUE,否则为FALSE;
long nStartTime; //最近接受到的一条的时间
}SAVEMSGINFO;
class CGsmModem
{
public:
CGsmModem();
virtual ~CGsmModem();
public:
SHORTMSGINFO * GetShortMsgInfoPtr(){return m_pShortMsgInfo;};
int ReadComm(char *pReadPool,long nReadLen);
int WriteComm(const char*pWritePool,long nWriteLen);
SHORTMSGINFO* getAllSMS();
int ReadMsgFromSIMX(int nMsgIndex,char *pReadPool);
void ReleateMsg(int nMsgIndex);
int GetAllMsg(char* &pChar,int nMsgIndex);
BOOL GetMsgComplete(int nMsgIndex);
int SaveMsgFile2(TCHAR *pathName);
int GetCovLength(char *buffer,int nLength);
int DeleteAllMsg();
SHORTMSGINFO* ReadIndexSms(int nSmsIndex);
int ReceivePhone();//接电话
int SendNumKey(char *pKey);//发送数字键
int ShowMsgState(int nType,int *pSmsIndex);//显示短消息的状态
int HangupPhone();//挂断电话
int CallPhone(const char *pPhoneNum);//打电话
void SendDTMF(const char *pPhoneNum);
int DispInComingNum(char *pIncomingNum);//显示来电号码
int CloseGsmPhone();//关机
int DelayTimer(int nMillisecond);//时间延迟
int SendMsg(char *pData, char *pPhoneNum,int nDataLen, int nMsgType,int nIsUnicode);//发送短消息
SHORTMSGINFO* ReadGsmData(int nDataLen);//读短消息
int ServiceCorp(char *pCropName);//网络服务商
int DeleteShortMsg(int nMsgIndex);//删除短消息
int GsmSignalQuality(void);//信号质量
int GetCommEvent(int iEventType);//获取串口事件
int InitGsm();//初始化GSM
int ReadDataFromPort(char *pReadPool,long nReadLen,BOOL bIsClearBuf);//读串口数据
int SmsNumInSIM(int& nUsedNum,int& nTotalNum);//SIM卡短消息的使用的情况
int SaveMsgFile(TCHAR *pathName);//把短消息以文件的形式保存
int OperCenterNum(char *pCenterNum,int nType);//
long ReadLong(char *pPool);
double ReadDouble(char *pPool);
double ReadChar(char *pPool);
private:
void ClearCommBuf(int iType);//清除串口缓存
int InitPort(int iPort);//初始化串口
int ClosePort();//关闭串口
int ReadMsgFromSIM(int nMsgIndex,char *pReadPool);//从SIM卡上读短消息
int ReadMsgIndex(char *pReadPool);//读短消息在SIM卡的位置
int WriteDataToPort(const char *pWritePool,long nWriteLen);//写串口数据
int SendATCmd(const char *strATCmd);//发送AT命令
//把数据组织成短消息格式
int OrganizeMsg(char *pData, const char *pPhoneNum,int nDataLen, int nMsgType,int nIsUnicode);
//解析短消息的数据格式
int DecodeShortMsg(char *pReadPool,BOOL nIsInSIM);
//根据图层名称判断该要素是点,线,面
//点=0,线=1,面=2;
int JudgeMapType(char* strname,int i);
private:
int ReadSmsStr(char *pSrc,char *pDest,char cEndChar);//读SMS中的字符串
int SmsCharToInt(char *pPool,char cEndChar,int &nJumpLen);
int m_nTransNum;
BOOL m_bIsSendOver;
CGSMProtocol m_cGSMProtocol;
HANDLE m_hComm;
BOOL m_bIsGsmOn;
char m_pReadPool[M_READBUFLEN];
char m_pWritePool[M_WRITEBUFLEN];
SHORTMSGINFO * m_pShortMsgInfo;
int m_nMsgCount; //当前接受的来自客户端的短消息的数目
SAVEMSGINFO m_SaveMsg[M_MAXMSGNUMBER]; //接受一个完整的短消息
};
extern CGsmModem g_GsmModem;
#endif // !defined(AFX_GSMMODEM_H__E333627F_0954_4F97_81FD_CB87A93D3E0A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -