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

📄 gsmcomm.h

📁 电信机房MDF、电源柜监控源码,主要用在通信机房配线设备监控、电源柜监控
💻 H
字号:
// GsmComm.h: interface for the CGsmComm class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GSMCOMM_H__9F1C755D_F179_45BD_BDF1_7B8BF256FC0A__INCLUDED_)
#define AFX_GSMCOMM_H__9F1C755D_F179_45BD_BDF1_7B8BF256FC0A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Afxtempl.h>

//#include "media.h"
#include "scom.h"


// 用户信息编码方式
#define GSM_7BIT		0
#define GSM_8BIT		4
#define GSM_UCS2		8

// 应答状态
#define GSM_WAIT		0		// 等待,不确定
#define GSM_OK			1		// OK
#define GSM_ERR			-1		// ERROR

// 短消息参数结构,编码/解码共用
// 其中,字符串以'\0'结尾
//##ModelId=44B6F88503DC
typedef struct {
	char SCA[16];			// 短消息服务中心号码(SMSC地址)
	char TPA[16];			// 目标号码或回复号码(TP-DA或TP-RA)
	char TP_PID;			// 用户信息协议标识(TP-PID)
	char TP_DCS;			// 用户信息编码方式(TP-DCS)
	char TP_SCTS[16];		// 服务时间戳字符串(TP_SCTS), 接收时用到
	char TP_UD[200];		// 原始用户信息(编码前或解码后的TP-UD)
	short index;			// 短消息序号,在读取时用到
} SM_PARAM;


typedef struct{
	UINT unID ;			//短信内容号
	CString strName ;	//接收电话语音的人的姓名
	CString	strPhone ;	//电话号码
	CString strEQName ;	//设备名称
	CString strEQAddr ;	//设备地址
	int nFault ;		//拨打失败次数
	int nEQPort ;		//设备端口
	HWND hWnd ;			//通讯窗口
	//UINT unState ;//使用状态 0 - 未使用, 1 - 已使用 ;
}sVoice ;

typedef struct{
	UINT unID ;			//短信内容号
	int nFault ;		//发送失败次数
	CString strName ;	//发送的接收人姓名
	CString strMsg ;	//发送的短信PDU格式
	CString strSend ;	//发送的短信内容
	CString strPhone ;	//接收短信的手机号码
	LPVOID	pSock  ;	//用于Web短信响应返回
	UINT unState ;		//使用状态 0 - 未使用, 1 - 已使用 ;
}sSIM ;

//##ModelId=44B6F886004E
class __declspec(dllimport) CGsmComm :public CSerialComm
{
public:
	
	BOOL GetGsmRun();
	
	int CloseGsm();
	
	CString m_strMsgError;
	
	int m_nFMsgTime;				//发送短信次数 
	
	int m_nFCallTime;				//拨打电话次数
	
	int GetFMsgTime();
	//##ModelId=44B6F8860070
	int StartVoiceThe();
	//##ModelId=44B6F886007D
	BOOL m_bVoiceIsOpen;			//语音启用标志
	//##ModelId=44B6F886007E
	BOOL m_bMsgIsOpen ;				//短信启用标志
	//##ModelId=44B6F886007F
	BOOL m_bVoiceRun ;				//语音运行标志
	//##ModelId=44B6F886008C
	BOOL m_bEnd ;					//通话结束标志
	//##ModelId=44B6F886008D
	HANDLE hGsm ;
	//##ModelId=44B6F886008E
	HANDLE hVoice ;
	//##ModelId=44B6F886008F
	HANDLE hMsg ;
	//##ModelId=44B6F886009C
	int HangUp();
	//##ModelId=44B6F886009D
	int Dail(CString strNumber);
	//##ModelId=44B6F886009F
	virtual void DataProcess(UCHAR *buf, DWORD len);
	//##ModelId=44B6F88600AB
	int GsmSendMessage(SM_PARAM* pSrc,CString strName,CString strPhone,CString strSend,LPVOID pSock,int nType);
	//##ModelId=44B6F88600BB
	int GsmAddMsg(CString strSend,CString strNumber,CString strName,LPVOID pSock,int nType) ;
	//##ModelId=44B6F88600CB
	int m_nCount;
	//##ModelId=44B6F88600CC
	int m_nMsgMax;
	//##ModelId=44B6F88600CD
	int ReadMsg(int nNo,CString &strMsg);
	//##ModelId=44B6F88600DB
	BOOL AT(CString strCmd);
	//##ModelId=44B6F88600DD
	CString m_strMsgCenter;
	//##ModelId=44B6F88600DE
	BOOL InitGSM(UINT unPort);

	

	CGsmComm();



	BOOL m_bGsm,m_bThread;
	int m_ulTime;


	//短信相关函数
	int AddSim(sSIM f_Sim);
	int InsertAfterMsg(CString strMsg,CString strName,CString strSend,LPVOID pSock);
	int GetMsg(sSIM &f_Sim) ;
	int GetCount() ;
	int GetMax() ;
	int DelMsg() ;
	int AddMsg(CString strMsg,CString strName,CString strPhone,CString strSend,LPVOID pSock) ;
	
	//语音相关函数
	int AddSVoice(sVoice f_Voice);
	int GetVoiceCount();
	int GetVoice(sVoice& f_Voice);
	int DelVoice();
	int AddVoice(CString strEQName, CString strAddr,int nPort,HWND hWnd,CString strName,CString strPhone);

	//CMedia			*m_pMedia ;
	CSerialComm		*m_pSerial; 
	//##ModelId=44B6F8860197
	virtual ~CGsmComm();

	enum  enumState{
		AT_OK=0,					// GSM初始化成功
		MSG_RUN,					// 发送短信中
		MSG_RESET,					// 重置短信中心
		CALL_DAIL,					// 拨打语音电话
		CALL_CONNECT,				// 语音电话接通
		CALL_HANGUP,				// 挂断语音电话
		CALL_WAIT,
	};						// 处理过程的状态
	
	int  nState; 

protected:
	//##ModelId=44B6F88601A5
	static UINT MsgThd(LPVOID pPara);
	//##ModelId=44B6F88601B5
	static UINT VoiceThd(LPVOID pPara);
	//##ModelId=44B6F88601B8
	BOOL m_bGsmRun ;
	//##ModelId=44B6F88601C6
	CWinThread *m_pMsgThread ;		//e负责短信发送线程
	//##ModelId=44B6F88601CB
	CWinThread *m_pVoiceThread ;	//负责电话语音线程

	//短信相关变量
	CList< sSIM, sSIM& > m_MsgList ; //短信列表
	int m_nMax;						//最大短信熟练
	HANDLE hEvent;					//等候事件

	//语音相关变量
	int m_nMaxVoice;
	int m_nCountVoice;
	CList< sVoice, sVoice& > m_VoiceList ; //短信列表
	HANDLE hEventVoice;
	//CWinThread *m_pReadThread ;				//负责即时读串口线程
	CWnd *m_PWnd;


private:
	//##ModelId=44B6F88600EB
	int GsmBytes2String(const unsigned char* pSrc, char* pDst, int nSrcLength);
	//##ModelId=44B6F88600FA
	int GsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength);
	//##ModelId=44B6F8860109
	int GsmEncode7bit(const char* pSrc, unsigned char* pDst, int nSrcLength);
	//##ModelId=44B6F8860119
	int GsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength);
	//##ModelId=44B6F8860128
	int GsmEncode8bit(const char* pSrc, unsigned char* pDst, int nSrcLength);
	//##ModelId=44B6F8860138
	int GsmDecode8bit(const unsigned char* pSrc, char* pDst, int nSrcLength);
	//##ModelId=44B6F8860148
	int GsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength);
	//##ModelId=44B6F8860157
	int GsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength);
	//##ModelId=44B6F8860167
	int GsmInvertNumbers(const char* pSrc, char* pDst, int nSrcLength);
	//##ModelId=44B6F8860177
	int GsmSerializeNumbers(const char* pSrc, char* pDst, int nSrcLength);
	//##ModelId=44B6F886017B
	int GsmEncodePdu(const SM_PARAM* pSrc, char* pDst);
	//##ModelId=44B6F8860188
	int GsmDecodePdu(const char* pSrc, SM_PARAM* pDst);
	//##ModelId=44B6F8860196


public:
	BOOL SetServiceNum(CString strCenter);
	BOOL SendMsgTo(CString phone, CString msg);
	void SetParent(CWnd * pWnd);
	virtual void onRing(char * m_phone);
	// 短消息到达
	virtual void onMessageArrived(int iPos);
	void onATError(char * lError);
	// 获得短消息数
	int GetSMSCount(void);
	// 删除存储的短信息
	BOOL DeleteSMS(int iNo);
	void Answer(void);
};

#endif // !defined(AFX_GSMCOMM_H__9F1C755D_F179_45BD_BDF1_7B8BF256FC0A__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -