?? 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"
//定義發(fā)送短消息的類型
#define M_MSGDATA 0X15 //數(shù)據(jù)短消息
#define M_MSGUCS2 0X08 //UCS2格式
//通訊用到的參數(shù)
#define M_ERROR '4' //命令錯誤
#define M_MSGPACKLEN 132 //短消息數(shù)據(jù)包的長度
#define M_READBUFLEN 1024
#define M_WRITEBUFLEN 1024
#define M_MAXMSGNUMBER 10 //同時最多支持的客戶端數(shù)目
//定義短消息
typedef struct
{
int nMsgType;//短消息的類型
int nMsgLen;//短消息的長度
char pSrcPhoneNum[16];//原地址
char pTime[16];//時間
char MsgData[160];//短消息的內(nèi)容
int nRecInfo;//1為短消息發(fā)送成功,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; //屬于同一個短消息發(fā)送的消息標志
int nCount; //短消息數(shù)目
int nLength[10]; //每條短消息的長度
char* msg[10]; //保存100條短消息的數(shù)據(jù)
BOOL bAccess[10]; //已經(jīng)接受到了短消息為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);//發(fā)送數(shù)字鍵
int ShowMsgState(int nType,int *pSmsIndex);//顯示短消息的狀態(tài)
int HangupPhone();//掛斷電話
int CallPhone(const char *pPhoneNum);//打電話
void SendDTMF(const char *pPhoneNum);
int DispInComingNum(char *pIncomingNum);//顯示來電號碼
int CloseGsmPhone();//關(guān)機
int DelayTimer(int nMillisecond);//時間延遲
int SendMsg(char *pData, char *pPhoneNum,int nDataLen, int nMsgType,int nIsUnicode);//發(fā)送短消息
SHORTMSGINFO* ReadGsmData(int nDataLen);//讀短消息
int ServiceCorp(char *pCropName);//網(wǎng)絡(luò)服務(wù)商
int DeleteShortMsg(int nMsgIndex);//刪除短消息
int GsmSignalQuality(void);//信號質(zhì)量
int GetCommEvent(int iEventType);//獲取串口事件
int InitGsm();//初始化GSM
int ReadDataFromPort(char *pReadPool,long nReadLen,BOOL bIsClearBuf);//讀串口數(shù)據(jù)
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();//關(guān)閉串口
int ReadMsgFromSIM(int nMsgIndex,char *pReadPool);//從SIM卡上讀短消息
int ReadMsgIndex(char *pReadPool);//讀短消息在SIM卡的位置
int WriteDataToPort(const char *pWritePool,long nWriteLen);//寫串口數(shù)據(jù)
int SendATCmd(const char *strATCmd);//發(fā)送AT命令
//把數(shù)據(jù)組織成短消息格式
int OrganizeMsg(char *pData, const char *pPhoneNum,int nDataLen, int nMsgType,int nIsUnicode);
//解析短消息的數(shù)據(jù)格式
int DecodeShortMsg(char *pReadPool,BOOL nIsInSIM);
//根據(jù)圖層名稱判斷該要素是點,線,面
//點=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; //當前接受的來自客戶端的短消息的數(shù)目
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 + -