📄 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_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -