?? wsminterface.h
字號:
// WSMInterface.h: interface for the CWSMInterface class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_WSMINTERFACE_H__456E1F99_8576_4557_A4E8_D735DC246311__INCLUDED_)
#define AFX_WSMINTERFACE_H__456E1F99_8576_4557_A4E8_D735DC246311__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "WSerialComm.h"
#include "WMsgFrameParser.h"
#include "WAtCmdResult.h"
#include "WMsgSentHistory.h"
const char AT_ECHO_OFF[] = "ATE0\r\n";
const char AT_SET_TEXT_MODE[] = "AT+CMGF=1\r\n";
const char AT_PASSIVE_RECEIVE_MODE[] = "AT+CNMI=3,2,2,0,0\r\n";
const char AT_SET_SMS_CENTER[] = "AT+CSCA=\"%number%\"\r\n";
const char AT_SEND_MSG[] = "AT+CMGS=\"%number%\"\r\n";
const char AT_SHORT_MSG_END[] = "\x1A\r\n";
const DWORD ERR_TOO_MANY_WAITING_FRAMES = 1; // 排隊太多
const DWORD ERR_COM_WRITE_ERROR = 2; // 寫錯誤
const DWORD ERR_SMS_NO_ANSWER = 3; // SMS 沒響應
class CWSMInterface : protected CWSerialComm
{
public:
CWSMInterface();
~CWSMInterface();
// 設置短信中心號碼, return 0 if success
DWORD SetSMSCenter(LPCTSTR lpcszCenterNumber);
// hwnd 接收通知的窗口,
// msg 需要發送的消息定義
void SetWinHandleAndNotifyMessage(HWND hwnd, WORD msg);
// 設置超時,所有的發送用相同的超時設置
void SetTimeOut(const MsgTimeOutType& timeOut);
// lpcszPhoneNumber : 接收號碼
// msgType : 命令類型--達示、調度、
// lpData : 需要發送的數據
// dwDataSize : 數據長度
// 返回出錯代碼,0表示成功
DWORD SendMessage(LPCTSTR lpcszPhoneNumber, BYTE msgType, const BYTE* lpData, DWORD dwDataSize);
BOOL OpenCom(int portNo);
void OnSysTimeChanged();
protected:
DWORD SendPacket(const CWMsgPacket& toSent, BOOL bAsPC = TRUE);
BOOL InitSMSModule();
private:
enum CurrentCmd
{
AT_CMD,
MSG_FRAME_CMD,
NOT_DETERMINED
};
enum CurrentCmd m_currCmd;
BOOL InitMembers();
BOOL WriteString(LPCSTR lpszToWrite);
// if len == -1 use strlen to get length
DWORD SendAtCmd(LPCSTR lpszToSend, int len, DWORD dwTimeOut = 60000);
// overrided
void OnDataRead( const LPBYTE, DWORD );
void ProcessOneByte(BYTE byData);
void ParseAtCmd(BYTE byData);
void ParseMsgFrame(BYTE byData);
void ResetParsers();
void ProcessReceivedMsgFrame(const CWMsgPacket& msgFrame);
void ProcessReceivedAtCmdResult(const CWAtCmdResult& atCmdRes);
DWORD SendOneFrame(const CWMsgSent& toSent);
DWORD SendOnePacket(const CWMsgSent& toSent, int packetIndex);
HWND m_hwndNotify;
WORD m_msgNotify;
HANDLE m_hSendEvent;
CWAtCmdParser m_atParser;
CWMsgFrameParser m_msgParser;
CWMsgSentHistory m_msgHistory;
};
#endif // !defined(AFX_WSMINTERFACE_H__456E1F99_8576_4557_A4E8_D735DC246311__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -