www.pudn.com > SimSimens.rar > SimSimensDoc.h


// SimSimensDoc.h : interface of the CSimSimensDoc class 
// 
///////////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_SIMSIMENSDOC_H__64B3510A_4ACE_11D6_9862_0050BF0A4880__INCLUDED_) 
#define AFX_SIMSIMENSDOC_H__64B3510A_4ACE_11D6_9862_0050BF0A4880__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "SimSimens.h" 
 
UINT CommProc(LPVOID pParam);                   //线程控制函数 
 
class CSimSimensDoc : public CDocument 
{ 
protected: // create from serialization only 
	CSimSimensDoc(); 
	DECLARE_DYNCREATE(CSimSimensDoc) 
 
// Attributes 
public: 
	CWinThread * m_pThread;       	            //代表辅助线程      
	volatile BOOL m_bConnected;                 //标志和串口的连接状态 
	volatile HWND m_hTermWnd;                   //接收WM_COMMNOTIFY 
	                                            //消息的视图窗口 
	volatile HANDLE m_hPostMsgEvent;            //用于WM_COMMNOTIFY 
	                                            //消息的事件对象, 
	                                            //事件处于有信号状态 
	                                            //时才可以发送消息 
	OVERLAPPED m_osRead, m_osWrite;             //用于重叠读/写 
	volatile HANDLE m_hCom;                     //串行口句柄 
 
	int m_nStatus;                              //状态(0:读;1:写) 
    int m_nReadStep;                            //读状态步骤 
    int m_nWriteStep;                           //写状态步骤 
 
	int rt_STX_number;                          //试发STX计数 
	int rt_number;                              //数据块重发计数 
	int rr_number;                              //数据块重收计数 
	CStringArray replace_arr;                   //用于更新的字符数组 
	bool is_replace;                            //标志处于数据更新状态 
 
	int m_nBaud;                                //波特率 
	int m_nDataBits;                            //数据位 
	int m_nFlowCtrl;                            //流量控制 
	int m_nParity;                              //奇/偶校验 
	int m_nPort;                                //串行端口 
	int m_nStopBits;                            //停止位 
	BOOL m_bEcho;                               //是否回显                   
    BOOL m_bNewLine;                            //是否自动换行 
    CString m_sPort;                            //校正端口名 
 
    int m_nTextMode;                            //数据类型 
    CString m_sD1;                              //数据域1 
	CString m_sD2;                              //数据域2 
    CString m_sD3;                              //数据域3 
    CString m_sD4;                              //数据域4 
    CString m_sD5;                              //数据域5 
    char m_cTextMode;                           //校正数据类型 
		 
    char transmit_str[MAXBLOCK/4];              //发送区 
	char receive_str[MAXBLOCK/4];               //接收区 
	char temp_str[MAXBLOCK/4];                  //数据暂放区 
    int transmit_number;                        //发送区计数 
	int receive_number;                         //接收区计数 
    char tc;                                    //发送字节暂存区 
	char rc;                                    //接收字节暂存区 
 
	char bcc;                                   //BCC值 
    bool no_error;                              //记录错误 
	int priority;                               //发送优先权 
 
	CString m_strTrainNo; 
	CString m_strDriverNo; 
	CString m_strBodyHead; 
	CString m_strBodyTail; 
	CString m_strLineNo; 
	CString m_strLocation; 
 
// Operations 
public: 
	BOOL ConfigConnection();                    //设置串口设备 
	BOOL OpenConnection();                      //打开串口设备 
	void CloseConnection();                     //关闭串口设备 
 
	void Transmit();                            //发送数据 
	 
	void GetTextBegin(CString str);             //获得发送数据首部 
	void GetText(CString str);                  //获得发送数据 
	void SetText();                             //获取消息 
	bool SetData(CString &str);                 //获取消息数据 
	void Rectify();                             //校正 
	void AntiRectify();                         //反校正 
	void RectifyText();                         //校正消息类型 
    void AntiRectifyText();                     //反校正消息类型 
 
    void EmptyTString();                        //初始化发送区 
    void EmptyRString();                        //初始化接收区 
	void SetTempStr();                          //暂放区赋值 
	void EmptyTempStr();                        //清空暂放区 
	void SetTString();                          //重新赋发送区值 
 
    void LinkError();                           //报链路错 
	bool OutTime(DWORD times);                  //记时器 
    bool TextEnd(char string[MAXBLOCK/4]);      //数据存放区非空 
    char GetBCC(char string[MAXBLOCK/4]);       //计算BCC值 
    bool CheckBCC(char c);                      //校验BCC值 
	void SmallReturnIdle();                     //返回空闲(小) 
    void LargeReturnIdle();                     //返回空闲(大) 
	void ReplaceData(CString string);           //数据同步 
 
    char Read();                                //读串口 
	DWORD Write(char c);                        //写串口 
 
	void WriteText();                           //发送报文 
	void Check();                               //检测意外 
	void ReTransmit();                          //重发操作 
	void ReadDLE_1();                           //首次接收DLE 
	void ReadDLE_2();                           //二次接收DLE 
    void ReadSTX();                             //接收STX 
	void ReadText();                            //接收报文 
	void ReadETX();                             //收到DLE后的处理 
	void ReadBCC();                             //接收并校验BCC 
	void ReadComm();                            //报文解释接收 
 
	void Show_T_STX();                      	//(用于调试) 
	void Show_T_DLE();                           
	void Show_T_NAK(); 
	void Show_T_DLEETXBCC(); 
	void Show_R_STX(); 
	void Show_R_DLE(); 
	void Show_R_NAK(); 
	void Show_R_DLEETXBCC(); 
	void Show_ZVZ_OUTTIME(); 
	void Show_QVZ_OUTTIME(); 
	void Show_BWA_OUTTIME(); 
	void Show_ZVZ_WAIT(); 
	void Show_TXA_OVER_STX(); 
	void Show_TXA_OVER_T_TEXT(); 
	void Show_TXA_OVER_R_TEXT(); 
	void Show_T_TEXT_SUCCESS(); 
	void Show_T_TEXT_UNSUCCESS(); 
	void Show_R_TEXT_SUCCESS(); 
	void Show_R_TEXT_UNSUCCESS(); 
	void Show_CHECKBCC_SUCCESS(); 
	void Show_CHECKBCC_UNSUCCESS(); 
	void Show_CHECK_SUCCESS(); 
	void Show_CHECK_UNSUCCESS(); 
	void Show_R_OTHER(); 
	void Show_T_A(); 
	void Show_R_A(); 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CSimSimensDoc) 
	public: 
	virtual BOOL OnNewDocument(); 
	virtual void Serialize(CArchive& ar); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	virtual ~CSimSimensDoc(); 
#ifdef _DEBUG 
	virtual void AssertValid() const; 
	virtual void Dump(CDumpContext& dc) const; 
#endif 
 
protected: 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CSimSimensDoc) 
	afx_msg void OnCommSetting(); 
	afx_msg void OnConnect(); 
	afx_msg void OnDisconnect(); 
	afx_msg void OnProperty(); 
	afx_msg void OnTransmitN(); 
	afx_msg void OnTransmitM(); 
	afx_msg void OnTransmitE(); 
	afx_msg void OnTransmitP(); 
	afx_msg void OnTransmitT(); 
	afx_msg void OnTransmitD(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_SIMSIMENSDOC_H__64B3510A_4ACE_11D6_9862_0050BF0A4880__INCLUDED_)