📄 mobliexdoc.h
字号:
// MoblieXDoc.h : interface of the CMoblieXDoc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MOBLIEXDOC_H__767AADBC_D585_47D8_A795_232432FF3389__INCLUDED_)
#define AFX_MOBLIEXDOC_H__767AADBC_D585_47D8_A795_232432FF3389__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "comThread.h"
#include "strFilter.h"
#include "phoneBook.h"
#include "dlgPBSelect.h"
#include "dlgCommPortSetup.h"
#include "dlgPBPath.h"
//CW = Current Work 当前工作状态
#define CW_TM 0//终端方式
#define CW_TEST_COMMAND 1//测试某个命令是否成功, 需要反回OK ERROR
#define CW_CMGS_QUERY 2//测试是否可发短信
#define CW_GET_SMS 51//取所有短消息
#define CW_DEL_SMS 52//删一条指定的短消息
#define CW_ADD_SMS 53
#define CW_SEND_SMS_HEAD 54//发送短消息的命令, 要等 '>' 回应
#define CW_SEND_SMS_BODY 55//发送短消息的主体
#define CW_SEND_STRNOWAIT 56//发送字串, 不待回应
#define CW_CPBS_QUERY 101//CPBS测试
#define CW_CPBS_SET 102//CPBS设定, ME/SM
#define CW_CPBR_QUERY 103//CPBR测试
#define CW_CPBR_GET 104//CPBR取电话本
#define CW_CPBW_QUERY 105//CPBW测试
#define CW_CPBW_SET 106//CPBW写电话本
//ATS = AT State
#define ATS_OK 0//AT命令成功
#define ATS_ER 1//AT命令失败
#define ATS_WAITING 2//AT命令正在等回复
#define ATS_WANTMORE 3//AT命令需要更多输入
class CMoblieXDoc : public CDocument
{
protected: // create from serialization only
CMoblieXDoc();
DECLARE_DYNCREATE(CMoblieXDoc)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMoblieXDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
virtual void OnCloseDocument();
//}}AFX_VIRTUAL
// Implementation
public:
void UpdateDlgPBSData();//更新电话本选择器中的数据, 使之与m_phoneBookXX同步
CPhoneBook & GetPhoneBook( int pbmID );//取得指定的电话本
void AddLog( const char * str );//加入一个字串到记录队列
void AddLog( CStringArray & strArray );//加入若干字串到记录队列
BOOL AddSMS( const char * sca, const char * callNo, const char * body );//发送一条短信
BOOL SendSMS( const char * sca, const char * callNo, const char * body );//发送一条短信
BOOL DelSMS( long id );//删除指定ID的短信
BOOL GetReceivedSMS( long id, CString & callNo, CString & sendTime, CString & body);//取指定的短信
long GetReceivedSMSNum();//取接收到的短信总条数
BOOL CrackSMS( const char * orgSMS );//解读一条短信
BOOL CommReadStr();//从COMM端口接数据到m_curReadStr
BOOL CommSendCurStr();//将m_curSendStr发到COMM端口
BOOL MakeCurSendStr();//生成要发送的当前字串, 如果可发送, 则返回真
BOOL ProcessRecievedStr();
DWORD SendCommandStr( const char * str, int cwID = CW_TM, const char * des = NULL );//发送一个字串到队列
void RemoveAllCommandArray();//清空所有命令队列
BOOL IsLogRead2Wnd()//判断当前的读工作是否要写入终端窗
{
return ( m_curWorkID == CW_TM || m_logRead2Wnd );
};
BOOL IsLogWrite2Wnd()//判断当前的写工作是否要写入终端窗, 终端发送不在此记录
{
return ( m_curWorkID != CW_TM && m_logWrite2Wnd );
};
BOOL IsLogRes2Wnd()//判断当前的读工作是否要写入终端窗,终端操作不记录
{
return ( m_logRes2Wnd );
};
BOOL IsCurWorkWantProcessResult();//根据m_curWorkID来判断这个工作是否对结果进行处理
BOOL IsCurWorkWantEcho();//根据m_curWorkID来判断这个工作是否要等回应
BOOL InitCOMM();//初始化串口
BOOL CloseCOMM();//关闭串口
BOOL InitMobile();//初始化手机, 同时测试功能是否正常
BOOL IsCommPortOpen(){return (m_hComm != INVALID_HANDLE_VALUE); };
virtual ~CMoblieXDoc();
HWND m_hMainWnd;//主窗口句柄
HANDLE m_hComm;//串口句柄
CDlgPBSelect m_dlgPBSelect;
CDlgPBSelect m_dlgSCASelect;
CDlgPBPath m_dlgPBPath;
CStrFilter m_curReadStr;//当前已读入的字串
CStringArray m_sendStrArray;//待写入的字串
CWordArray m_sendCWIDArray;//待写入字串的工作识别号
CStringArray m_sendStrDesArray;//描述待写入字串的字串
CStringArray m_readStrArray;//收到的字串(按回车换行分行)
CString m_curSendStr;//当前发送的字串
int m_curWorkID;//当前工作识别号
int m_atWantRes;//AT命令: 需要等到结果信号才能发送下一命令
int m_atState;//AT命令状态, 见ATS_XX的定义
BOOL m_logRead2Wnd;//指定读过程是否记录到窗口
BOOL m_logWrite2Wnd;//指定写过程是否记录到窗口
BOOL m_logRes2Wnd;//指定结果状态是否记录到窗口
CStringArray m_logArray;//待记录的字串
CStringArray m_waitingProcessArray;//待处理的接收信息
CStringArray m_receivedSMSOStrArray;//收到的短信原码
CStringArray m_receivedSMSHeadArray;//收到的短信头(在手机中的ID及状态)
CPhoneBook m_phoneBookME;//话机号码本
CPhoneBook m_phoneBookSM;//SIM卡号码本
int m_curWorkPBM;//当前工作的电话本 ME/SM
//串口通讯超时参数
COMMTIMEOUTS m_commTimeout;
DWORD m_commNoDataReadCounter;//连续无数据读入的计数器
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
BOOL IsAnsTimeout();
BOOL FindStrByHead( CStringArray & sa, const char * sHead, CString & reStr );
BOOL ProcessResCPBSQuery();//处理由CW_CPBS_QUERY产生的数据
BOOL ProcessResCPBRQuery();//处理由CW_CPBR_QUERY产生的数据
BOOL ProcessResCPBSSet();//处理由CW_CPBS_SET产生的数据
BOOL ProcessResCPBRGet();//处理由CW_CPBR_GET产生的数据
BOOL ProcessResCPBWSet();//处理由CW_CPBW_SET产生的数据
BOOL ProcessResCMGSQuery();//处理由CW_CMGS_QUERY产生的数据
BOOL ProcessResSendSMS();//处理由SEND_SMS_BODY产生的数据
BOOL ProcessResGetSMS();//处理由GET_SMS取的数据
BOOL ProcessResDelSMS();//处理由DEL_SMS取的数据
BOOL ProcessResAddSMS();//处理由ADD_SMS取的数据
BOOL ProcessResult();//处理结果字串集
CDlgCommPortSetup m_dlgCommPort;
CComThread * m_pComThr;
#define COMM_REC_BUF_SIZE 1024
char m_commBuf[COMM_REC_BUF_SIZE];
//{{AFX_MSG(CMoblieXDoc)
afx_msg void OnTest();
afx_msg void OnCommInit();
afx_msg void OnCommClose();
afx_msg void OnUpdateCommInit(CCmdUI* pCmdUI);
afx_msg void OnUpdateCommClose(CCmdUI* pCmdUI);
afx_msg void OnCommPortSetup();
afx_msg void OnLogReadToWnd();
afx_msg void OnUpdateLogReadToWnd(CCmdUI* pCmdUI);
afx_msg void OnLogWriteToWnd();
afx_msg void OnUpdateLogWriteToWnd(CCmdUI* pCmdUI);
afx_msg void OnCommReadOk();
afx_msg void OnLogResToWnd();
afx_msg void OnUpdateLogResToWnd(CCmdUI* pCmdUI);
afx_msg void OnUpdateCommPortSetup(CCmdUI* pCmdUI);
afx_msg void OnPbPathSet();
afx_msg void OnSmsSaveAll();
afx_msg void OnUpdateSmsSaveAll(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MOBLIEXDOC_H__767AADBC_D585_47D8_A795_232432FF3389__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -