?? baserule.h
字號(hào):
/******************************************************************
* Copyright (c) 2004-2005, 許繼日立公司
* All rights reserved.
*
* 文件名稱:baserule.h
* 文件標(biāo)識(shí):
* 摘 要:規(guī)約基類處理,包括通信介質(zhì)的連接、讀寫
*
* 當(dāng)前版本:1.0
* 作 者:李龍偉 <lilongwei1@hotmail.com>
* 完成日期:2004年12月23日
*
* 取代版本:1.0
* 原作者 :李龍偉
* 完成日期:2004年12月23日
******************************************************************/
#ifndef _BASERULE_H
#define _BASERULE_H
#if _MSC_VER>1000
#pragma warning(disable: 4786)
#endif
#include <windows.h>
#include "datadef.h"
using namespace std;
class BaseRule
{
public:
BaseRule(BYTE no, short rlen, short slen);
BaseRule(BaseRule& b); //拷貝構(gòu)造函數(shù)
virtual ~BaseRule();
unsigned int m_nPortNo; //RTU邏輯端口號(hào)
unsigned char *m_bSendBuf; //發(fā)送緩沖區(qū)地址
unsigned char *m_bRevBuf; //接收緩沖區(qū)地址
int m_wRevLen; //接收數(shù)據(jù)包長(zhǎng)度
int m_wSendLen; //發(fā)送數(shù)據(jù)包長(zhǎng)度
enum CMD_TYPE m_eCmdCode; //當(dāng)前通訊命令碼
enum CMD_TYPE m_ePreCode; //上次通訊命令碼
//將TCP/IP、RS-232、LON通訊方式融合在一個(gè)函數(shù)里,對(duì)外部規(guī)約
//模塊的調(diào)用是透明的,實(shí)現(xiàn)連接的初次建立及重新建立
int BaseConnect(unsigned char Channel_Type);
//支持TCP/IP、RS-232、LON通訊方式發(fā)送數(shù)據(jù)包
int BaseSend(unsigned char Channel_Type);
//支持TCP/IP、RS-232、LON通訊方式接收數(shù)據(jù)包
//其中:t最長(zhǎng)延時(shí)時(shí)間(秒),ms字節(jié)最大間隔時(shí)間(毫秒),SOCK方式cdt規(guī)約,RS232,LON:ms=0不用,Channel_Type通道類型
int BaseRead(int t, int ms, unsigned char Channel_Type);
//純虛函數(shù),BaseRule類為抽象類
//循環(huán)發(fā)送接收函數(shù)
virtual void RuleLoop(void) = 0;
//對(duì)數(shù)據(jù)進(jìn)行解包處理
virtual void UnpackData(void) = 0;
//對(duì)數(shù)據(jù)進(jìn)行打包處理
virtual void PackData(void) = 0;
//設(shè)置網(wǎng)絡(luò)狀態(tài)
void SetNetState(enum GateDevStatus state);
//讀取網(wǎng)絡(luò)狀態(tài)
void GetNetAddr(GateIpPort &netaddr);
//讀取站類型
void GetGateStation(enum GateStation &eStation);
private:
int m_nServer; //服務(wù)器方式 SOCKET通訊連接句柄
unsigned char m_bComIndex; //串口序號(hào)
HANDLE m_hCom; //RS-232通訊連接柄
COMINFO m_ComInfo[MAXCOMCOUNT]; //串口信息
BYTE m_no; //構(gòu)造函數(shù)參數(shù)值
short m_rlen; //構(gòu)造函數(shù)參數(shù)值
short m_slen; //構(gòu)造函數(shù)參數(shù)值
//TCP/IP通訊方式接收數(shù)據(jù)包,等待方式
int SockRead(int fd, int t, int ms);
//TCP/IP通訊方式:實(shí)現(xiàn)連接的建立
int SockConnect(void);
//TCP/IP通訊方式發(fā)送數(shù)據(jù)包
int SockSend(void);
//釋放套接字資源
int FreeSocket(int &s);
//串口連接,實(shí)現(xiàn)連接的建立
int CommConnect(void);
//監(jiān)測(cè)串口是否打開。
int CommCheck(char *sysname);
//寫232串口信息
int RS232Send(void);
//讀232串口信息
int RS232Read(int nLength);
//讀配置信息
void ReadConfig(void);
//取文件數(shù)據(jù)
DWORD GetFileValue(FILE *fp);
//讀字符數(shù)據(jù)
void GetFileChar(FILE *fp, char pcRead[]);
protected://可以繼承
int m_iAddress; //節(jié)點(diǎn)地址
char m_szIPAddress[20]; //IP地址
int m_iPort; //IP端口號(hào)
char m_szComm[20]; //串口地址
DWORD m_dbBaudRate; //波特率baud;
BYTE m_bByteSize; //數(shù)據(jù)位number of bits/byte, 4-8
BYTE m_bParity; //校驗(yàn)位0-4=no,odd,even,mark,space
BYTE m_bStopBits; //停止位0,1,2 = 1, 1.5, 2
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -