📄 faketolcanview.h
字号:
// FakeTolcanView.h : interface of the CFakeTolcanView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_FAKETOLCANVIEW_H__69627C3D_DCE4_4EB0_AB59_222118709FDD__INCLUDED_)
#define AFX_FAKETOLCANVIEW_H__69627C3D_DCE4_4EB0_AB59_222118709FDD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "SerialPort.h"
//#include "GridList.h"
#include "ComboListCtrl.h"
#include "NodeData.h"
/*
#define WM_RECVDATA WM_USER+1
struct RECVPARAM
{
SOCKET sock;
HWND hwnd;
};
*/
#define MAX_SOCKET 200 // 定义此服务器所能接受的最大客户量
// 定义网络事件通知消息
#define WM_SOCKET WM_USER + 8
class CFakeTolcanView : public CFormView
{
protected: // create from serialization only
CFakeTolcanView();
DECLARE_DYNCREATE(CFakeTolcanView)
public:
//{{AFX_DATA(CFakeTolcanView)
enum { IDD = IDD_FAKETOLCAN_FORM };
// CGridList m_NodeList;
CComboListCtrl m_NodeList;
CString m_strCmd;
//}}AFX_DATA
// Attributes
public:
CFakeTolcanDoc* GetDocument();
// Operations
public:
int m_nBaud; //波特率
int m_nCom; //串口号
char m_cParity; //校验
int m_nDatabits; //数据位
int m_nStopbits; //停止位
int m_nBufferSize;
BOOL m_bConfig; //串口是否配置好
CSerialPort m_SerialPort;
BOOL m_bPortOpened;
BOOL m_bClosePort;
// TNodeCollection m_Nodes;
int m_iIndex;
CString m_strRecvData; // 数据接收区接收数据
int m_NodeNum;
// m_pNodeArray m_pNodes;
// CNode *pMyNode;
DWORD m_dwPackId;
static DWORD m_dwPackNo;
BYTE m_PackType;
BYTE m_PackCheck;
USHORT m_PackInterval; //数据包间隔
USHORT m_PackHeadLen;
USHORT m_DataLen;
BYTE m_NodeType; //判断节点类型
//绞车, 是不是为深度节点
int m_Min;
int m_Max;
int m_Step;
int m_FirstValue;
//4-20 mA 模拟节点
USHORT m_BaseVal;
USHORT m_Bound;
//泵冲节点
int m_PumpBaseValue;
int m_PumpBound;
USHORT m_PumpDot;
// int m_PumpStep2;
BOOL m_bNodeChange;
CString m_strNodeInfo; //存储PC机发过来的节点信息
int m_iItem;
USHORT m_NodeNO;
int m_iNodeType;
BOOL m_bCollectData;
int m_nCollectCmd;
int m_nCollectNum;
BOOL m_bCollectFirst;
CStringArray m_SampleNum;
USHORT m_SampleDot;
USHORT m_CurrenVal;
USHORT m_SVal;
int m_iNodeNum;
BOOL m_bModifyNode;
CString m_strLocalIp; //保存本机IP地址
SOCKET m_socket;
int m_iPort;
// static SOCKET m_SockConn; //等待客户连接返回的套接字
// static CString strData;
int m_iFlag; //串口采集数据标志
// int m_iFlag1; //网络采集数据标志
CString m_strRecvData1;
BOOL m_bSP;//
BOOL m_bNW;//
// 客户连接列表
SOCKET m_arClient[MAX_SOCKET]; // 套节字数组
int m_nClient; // 上述数组的大小
CStringArray m_SockArray0; //89 00
CStringArray m_SockArray7; // 89 07
CStringArray m_SockArray9; //89 09
TNodeDataCollection m_NodeDatas;
CStringArray m_NodeNoArray;
// CArray<CString, CString&> m_NodeNos;
CStringArray m_NodeTypes;
// int m_iRow;
/* CString m_strNodeType;
CString m_strBase;
CString m_strBound;
CString m_strMinValue;
CString m_strMaxValue;
CString m_strFirstValue;
CString m_strStep;*/
BOOL CanSerialize();
void LoadParamInfo();
void SaveParamInfo();
void ReturnNodeId(int flag = 0);
void ReturnNodeInfo(int flag = 0);
void SendCollectionData(int flag = 0);
void UpdateNodeList();
int ReturnNodeNum();
void SaveNodes();
void AddNode();
void ModifyNodesOrder();
void ModifyBigInterval();
void ModifyNode();
void GetLocalIP();
BOOL InitSocket();
// static DWORD WINAPI RecvProc(LPVOID lpParameter);
// static void RecvData(CString &strData, int len);
void PumpData(int flag = 0);
// 创建套节字,并设置为监听状态,准备接受客户的连接
BOOL CreateAndListen(int nPort);
// 关闭所有套节字,包括监听套节字和所有accept函数返回的套节字
void CloseAllSocket();
// 向客户连接列表中添加一个客户
BOOL AddClient(SOCKET s);
// 从客户连接列表中移处一个客户
void RemoveClient(SOCKET s);
void SetWinchCurrentData();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFakeTolcanView)
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual void Serialize(CArchive& ar);
virtual BOOL DestroyWindow();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void OnInitialUpdate(); // called first time after construct
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CFakeTolcanView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CFakeTolcanView)
afx_msg LONG OnComm(WPARAM ch, LPARAM port);
afx_msg void OnConfigSerialPort();
afx_msg void OnPackInfoConfig();
afx_msg void OnBtnSave();
afx_msg void OnButton1();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnRclickNodeList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnAddNode();
afx_msg void OnDeleteNode();
afx_msg void OnModifyNode();
afx_msg void OnUpdateAddNode(CCmdUI* pCmdUI);
afx_msg void OnUpdateDeleteNode(CCmdUI* pCmdUI);
afx_msg void OnUpdateModifyNode(CCmdUI* pCmdUI);
afx_msg void OnBtnAddNode();
afx_msg void OnBtnDeleteAllNodes();
afx_msg void OnBtnClerarRecvdata();
afx_msg void OnDblclkNodeList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDestroy();
afx_msg void OnClose();
afx_msg void OnNetWorkConfig();
afx_msg void OnBtnStartService();
afx_msg void OnClickList1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnBtnModifyNode();
afx_msg void OnBtnDeleteNode();
//}}AFX_MSG
afx_msg LRESULT OnEndLabelEditVariableCriteria(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT PopulateComboList(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnEndItemEdit(WPARAM wParam, LPARAM lParam);
// afx_msg void OnRecvData(WPARAM wParam,LPARAM lParam);
afx_msg long OnSocket(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in FakeTolcanView.cpp
inline CFakeTolcanDoc* CFakeTolcanView::GetDocument()
{ return (CFakeTolcanDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_FAKETOLCANVIEW_H__69627C3D_DCE4_4EB0_AB59_222118709FDD__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -