📄 gsmcomm.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 + -