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

📄 mobliexdoc.h

📁 通过手机数据线连接手机
💻 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 + -