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

📄 wmsgframe.h

📁 手机发送短信的Activex控件
💻 H
字号:
// WMsgFrame.h: interface for the CWMsgFrame class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_WMSGFRAME_H__A49013A0_E397_45F7_BAC4_2D1B7FE06678__INCLUDED_)
#define AFX_WMSGFRAME_H__A49013A0_E397_45F7_BAC4_2D1B7FE06678__INCLUDED_

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

const int MAX_PHONE_NUMBER_LEN = 11;
const int MAX_SHORT_MSG_LEN = 160;				// 160 ASCII

const int MAX_ASCII_MSG_LEN_PER_PACKET = MAX_SHORT_MSG_LEN - 7;  // cf protocol 
const int MAX_ASCII_MSG_LEN_OF_LASTPACKET = MAX_ASCII_MSG_LEN_PER_PACKET - 1; // last packet will use one more byte than other packets

const int MAX_BIN_MSG_BODY_LEN_PER_PACKET = MAX_ASCII_MSG_LEN_PER_PACKET / 2;
const int MAX_BIN_MSG_BODY_LEN_OF_LASTPACKET = MAX_ASCII_MSG_LEN_OF_LASTPACKET / 2;

const BYTE MIN_FRAME_NO = 0x20;
const BYTE MAX_FRAME_NO = 0x7B;
const BYTE MIN_PACKET_NO = MIN_FRAME_NO;
const BYTE MAX_PACKET_NO = MAX_FRAME_NO;
const BYTE MAX_PACKETS_PER_FRAME = MAX_PACKET_NO - MIN_PACKET_NO + 1;
const BYTE MAX_FRAMES_PER_PHONE_NO = MAX_FRAME_NO - MIN_FRAME_NO + 1;

const int MAX_ASCII_MSG_LEN_PER_FRAME = MAX_ASCII_MSG_LEN_PER_PACKET * (MAX_PACKETS_PER_FRAME - 1) + 
										MAX_ASCII_MSG_LEN_OF_LASTPACKET; 

const int MAX_BIN_MSG_LEN_PER_FRAME = MAX_BIN_MSG_BODY_LEN_PER_PACKET * (MAX_PACKETS_PER_FRAME - 1) + 
									  MAX_BIN_MSG_BODY_LEN_OF_LASTPACKET;		

const BYTE FRAME_BEGIN_ID = 0x7D;
const BYTE FRAME_END_ID = 0X7E;
const BYTE LAST_PACKET_ID = 0X7C;

class CWMsgFrame  
{
public:
	
	// 参见:协议修改建议.txt

	enum MessageType
	{
	  // 以下命令类型由发送时指定
	  DASHI_MSG = '^',					// 0x5E :  达示数据命令;正文为达示数据;
	  DIAODU_MSG_NEED_ANSWER =':',		// 0X3A:   调度命令,此条命令要求由司机确认;正文;
	  DIAODU_MSG_NEEDNOT_ANSWER = ';',	// 0X7B:   调度命令,此条命令不要求由司机确认;正文;

	  // 以下命令类型由发送程序处理,通过消息的wParam传递给界面, lParam为对应的调度信息ID
	  ANSWER_FRAME_MSG = '\\',			// 0X5C:   此调度信息已经司机确认、由车载机回复。此时包号、帧号均为0X20,正文为四个字节的调度信息编号(见调度信息组织);

	  // 以下命令类型全部由收发程序处理,与主界面无关
	  SEND_PACKET_AGAIN_MSG = '?',		//  0X3F:  车载机包数据接收错误,请求重发。此时帧号、包号为所接收错误帧的包号、帧号;正文无
	  SEND_FRAME_AGAIN_MSG = '['		//  0X5B:  车载机帧数据接收错误,请求重发。此时帧号为出错的帧,包号为0X20,正文无;

	};

	CWMsgFrame();
	~CWMsgFrame();


	
};

class CWMsgSent
{
public:

	CWMsgSent();
	~CWMsgSent();

	

	TCHAR m_szPhoneNumber[MAX_PHONE_NUMBER_LEN];	// to where
	BYTE  m_frameNo;								// 0X20 to 0X7B
	enum CWMsgFrame::MessageType   m_msgType;		// type of message	
	DWORD m_dwSendOutTime;							// when send out
	BYTE  m_binMsgData[MAX_BIN_MSG_LEN_PER_FRAME];	// what to send / binary

};

#endif // !defined(AFX_WMSGFRAME_H__A49013A0_E397_45F7_BAC4_2D1B7FE06678__INCLUDED_)

⌨️ 快捷键说明

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