⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsmmodem.h

📁 使用gsm收发短信的方式传递文件
💻 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 + -