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

📄 hwmobile.h

📁 短信收发的程序源代码。能自动检测手机是否连接好
💻 H
字号:
// HwMobile.h: interface for the CHwMobile class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_HWMOBILE_H__799F4BF1_E829_4BFB_A78C_EB4642F19C1C__INCLUDED_)
#define AFX_HWMOBILE_H__799F4BF1_E829_4BFB_A78C_EB4642F19C1C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


// 添加 [多语言] 模块连接库信息
#define _USE_DllMultiLanguage	1
// 添加 [PublicFunc] 模块连接库信息
#define _USE_DllPublicFunc	1
// 添加 [DllHwCOM] 模块连接库信息
#define _USE_DllHwCOM 1
// 添加 [HwMysql] 模块连接库信息
#define _USE_DllMysqlConn	1

#undef PUBPRET_H
#include "global.h"
#include "PubPret.h"
#include <Afxtempl.h>

// 手机工作线程休息时间(毫秒)
#ifdef _DEBUG
#define MOBILE_THREAD_SLEEP_TIME	1000
#else
#define MOBILE_THREAD_SLEEP_TIME	(3*1000)
#endif

#ifndef _2Lines
// 应答状态
#define GSM_UNKNOWN		0		// 不确定
#define GSM_OK			1		// OK
#define GSM_ERR			-1		// ERROR

// 最大允许读写错误次数,超过这个次数就认为设备不存在了
#define MAX_RWERROR_TIMES				3
// 等待 GSM 模块回应数据的时间
#define WAIT_GSM_DATA_TIME_SLOW			(10*WAIT_DATA_TIMEOUT)
#define WAIT_GSM_DATA_TIME_QUICK		(3*WAIT_DATA_TIMEOUT)
// 最小手机号码长度
#define MIN_MOBILENO_LENGTH				7

// 当从手机中取到短信中心号码时调用这个回调函数来保存
typedef void (*FUNC_SaveSMSCFromGSM) ( LPCTSTR lpszSMSC );

//
// 电话本信息
//
typedef struct _phone_book
{
	int nIndex;
	char szName[16];
	char szPhoneNO[PHONENO_LENGTH];
	char szPhoneBookName[8];
} t_PhoneBook;
typedef CArray<t_PhoneBook, t_PhoneBook&> t_Ary_PhoneBook;

class DLL_INTERNAL CHwMobile : public CHwCOM
{
public:
	FUNC_SaveSMSCFromGSM m_Proc_SaveSMSCFromGSM;
	BOOL InsertPhoneBook ( LPCTSTR lpszName, LPCTSTR lpszPhoneNO, LPCTSTR lpszPhoneBookName );
	char* Convert_SCTS2Standard ( char *szSCTS, char *szStandardTime, int nTimeSize );
	BOOL Init ();
	CHwMobile(LOG_FUNC ExternLog);
	virtual ~CHwMobile();
	inline void Enable_SoundPrompt ( BOOL bSoundPrompt=TRUE )
	{
		m_bSoundPrompt = bSoundPrompt;
	}
	char *DemandMobileInfo ( LPCTSTR lpszCmd, char *szOutBuf, int nOutSize );
	BOOL GetSMSCNO ();
	inline void SetModulePara ( int nComNO, int nBaudRate=0 )
	{
		if ( nComNO > 0 )
			m_nComNO = nComNO;
		if ( nBaudRate > 0 )
			m_nBaudRate = nBaudRate;
	}
	inline CString RetrievesSMSC ()
	{
		return m_csSMSC;
	}

protected:
	BOOL QueryDeviceExist ();
	CUIntArray m_UIntAry_NeedDelSMS;
	virtual BOOL HandleRecvSMS ( SM_PARAM *pSMRecv );
	virtual int Write ( LPCTSTR lpszData );
	virtual int Read ( char *data, int size );
	BOOL gsmReadMessageContent ( const char *szSMSFlag, char *szSupplement=NULL, const int nSupplementSize=0 );
	BOOL gsmDeleteSMS ( int nIndex );
	BOOL SendOneSMSPkt ( SM_PARAM *pSMSend );
	virtual int HandleCOMRW(int nRet);
	BOOL gsmReadPhoneBook ( LPCTSTR lpszPhoneBookName, t_Ary_PhoneBook *pAry_PhoneBook);
	LOG_FUNC Log;
	BOOL m_nInitOK;

	// 接口信息
	int m_nComNO;
	int m_nBaudRate;

	// 短信中心号码
	CString m_csSMSC;

private:
	BOOL QueryExistByRWCmd ();
	BOOL m_bSoundPrompt;
	void SMSBeep ( BOOL bRecv );

	BOOL gmsGetPhoneBookInfo (
		int &nStoreStartPos,
		int &nStoreEndPos,
		int &nMaxPhoneNOSize, 
		int &nMaxInfoSize,
		int &nMaxRecSize
	);
	BOOL gsmGetAllPhoneBookRec ( int nMaxRecSize, int nMaxRecNum, LPCTSTR lpszPhoneBookName, OUT t_Ary_PhoneBook *pAry_PhoneBook );
	BOOL gsmDecodeOnePhoneBook ( char *szPhoneBookRec, t_PhoneBook &PhoneBook );
	int gsmDecodePhoneBook (
		LPCTSTR lpszPhoneBookName,
		char *szPhoneBookRec,
		OUT t_Ary_PhoneBook *pAry_PhoneBook,
		OUT char *szRemainData,					// 处理后剩下的数据放到这里
		const int nRemainSize
	);
	int gsmPhoneBookEncode (
		OUT char *szPhoneBookRec,
		int nPhoneBookRecSize,
		IN LPCTSTR lpszType,
		IN t_PhoneBook &PhoneBook
	);
	BOOL gsmSelectPhoneBook ( LPCTSTR lpszPhoneBookName );
	int gsmParseOneMessage ( const char *szSMSFlag, char *szRecvedData, int nRecvedDataLen, SM_PARAM *pSMRecv );
	int gsmParseMessage ( IN const char *szSMSFlag, IN char *szRecvedData, int nRecvedDataLen );
	int gsmSerializeNumbers(const char* pSrc, char* szDst, int nSrcLength, int nDstSize);
	int gsmDecodePdu ( char* pSrc, int &nHandleBytes, SM_PARAM* pDst);
	BOOL ReadResponse ( LPCTSTR lpszResponse, BOOL bQuick=TRUE, char *szAns=NULL, int nSize=0 );
	BOOL gsmInit();
	int gsmString2Bytes(const char* pSrc, unsigned char* szDst, int nSrcLength, int nDstSize);
	int gsmEncode8bit(const char* pSrc, unsigned char* szDst, int nSrcLength, int nDstSize);
	int gsmDecode8bit(const unsigned char* pSrc, char* szDst, int nSrcLength, int nDstSize);
	int gsmEncodeUcs2(const char *pSrcByte, unsigned char *szDst, int nSrcLength, int nDstSize, WCHAR *wzSrc=NULL );
	int gsmDecodeUcs2(
		const unsigned char* pSrc,
		char* szDst,
		int nSrcLength,
		int nDstSize,
		WCHAR* wzSMSContent_Wide=NULL,
		int nWideSize=0
	);
	int gsmEncode7bit(const char* pSrc, unsigned char* szDst, int nSrcLength, int nDstSize);
	int gsmDecode7bit(const unsigned char* pSrc, char* szDst, int nSrcLength, int nDstSize);
	int gsmInvertNumbers(const char* pSrc, char* szDst, int nSrcLength, int nDstSize);
	int gsmBytes2String(const unsigned char *pSrc, char *szDst, int nSrcLength, int nDstSize);
	int gsmEncodePdu(const SM_PARAM *pSrc, char *szDst, int nDstSize );
	int gsmSendMessage(SM_PARAM* pSrc);
};

#endif
#endif // !defined(AFX_HWMOBILE_H__799F4BF1_E829_4BFB_A78C_EB4642F19C1C__INCLUDED_)

⌨️ 快捷键说明

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