头文件:
******************************************************************
* All rights reserved
*
* 文件名称:baseruleh
******************************************************************
#ifndef _BASERULE_H
#define _BASERULE_H
#if _MSC_VER>1000
#pragma warning(disable 4786)
#endif
#include
#include datadefh
using namespace std
class BaseRule
{
public
BaseRule(BYTE no short rlen short slen)
BaseRule(BaseRule& b) 拷贝构造函数
virtual ~BaseRule()
unsigned int m_nPortNo RTU逻辑端口号
unsigned char *m_bSendBuf 发送缓区址
unsigned char *m_bRevBuf 接收缓区址
int m_wRevLen 接收数包长度
int m_wSendLen 发送数包长度
enum CMD_TYPE m_eCmdCode 前通讯命令码
enum CMD_TYPE m_ePreCode 次通讯命令码
TCPIPRS232LON通讯方式融合函数里外部规约
模块调透明实现连接初次建立重新建立
int BaseConnect(unsigned char Channel_Type)
支持TCPIPRS232LON通讯方式发送数包
int BaseSend(unsigned char Channel_Type)
支持TCPIPRS232LON通讯方式接收数包
中:t长延时时间(秒)ms字节间隔时间(毫秒)SOCK方式cdt规约RS232LON:ms0Channel_Type通道类型
int BaseRead(int t int ms unsigned char Channel_Type)
纯虚函数BaseRule类抽象类
循环发送接收函数
virtual void RuleLoop(void) 0
数进行解包处理
virtual void UnpackData(void) 0
数进行包处理
virtual void PackData(void) 0
设置网络状态
void SetNetState(enum GateDevStatus state)
读取网络状态
void GetNetAddr(GateIpPort &netaddr)
读取站类型
void GetGateStation(enum GateStation &eStation)
private
int m_nServer 服务器方式 SOCKET通讯连接句柄
unsigned char m_bComIndex 串口序号
HANDLE m_hCom RS232通讯连接柄
COMINFO m_ComInfo[MAXCOMCOUNT] 串口信息
BYTE m_no 构造函数参数值
short m_rlen 构造函数参数值
short m_slen 构造函数参数值
TCPIP通讯方式接收数包等方式
int SockRead(int fd int t int ms)
TCPIP通讯方式:实现连接建立
int SockConnect(void)
TCPIP通讯方式发送数包
int SockSend(void)
释放套接字资源
int FreeSocket(int &s)
串口连接实现连接建立
int CommConnect(void)
监测串口否开
int CommCheck(char *sysname)
写232串口信息
int RS232Send(void)
读232串口信息
int RS232Read(int nLength)
读配置信息
void ReadConfig(void)
取文件数
DWORD GetFileValue(FILE *fp)
读字符数
void GetFileChar(FILE *fp char pcRead[])
protected继承
int m_iAddress 节点址
char m_szIPAddress[20] IP址
int m_iPort IP端口号
char m_szComm[20] 串口址
DWORD m_dbBaudRate 波特率baud
BYTE m_bByteSize 数位number of bitsbyte 48
BYTE m_bParity 校验位04nooddevenmarkspace
BYTE m_bStopBits 停止位012 1 15 2
}
#endif
**********************************************************************
******************************************************************
* All rights reserved
*
* 文件名称:cdth
******************************************************************
#ifndef _CCDT_H
#define _CCDT_H
#include
#include baseruleh
using namespace std
class CCDT public BaseRule
{
public
CCDT(BYTE no short rlen short slen)
virtual ~CCDT()
private
步字类型
enum CdtType
{
FIND_HEAD 0x00
SYN_HEAD
PACK_DATA
}
unsigned char m_bHeadEB 字节eb数
unsigned char m_bHead90 字节90数
unsigned char m_bSerial 解包数序号
enum CdtType m_bSyncFlag 步字类型
unsigned char m_bInfoBuf[6] 解包数信息
unsigned char m_bControl 控制字节
unsigned char m_bFrameType 帧类
unsigned char m_bInfoNumber 信息字数
unsigned char m_bBchTable[256] 中间余式表
enum FUNC_TYPE m_ePreFuncType 包功码类型
unsigned char m_bSoe80 soe事件第功码
unsigned char m_bSoeBuf[12] soe信息
unsigned long m_lTimeBegin 开始时刻
unsigned int m_nCtrlNumber 控制号
unsigned char m_bCtrlType 控分控合
测试
unsigned long m_begin 装置遥信状态测试时钟开始
vector bCommSendVec 发送缓
vector bCommReceiveVec 接收缓
private
循环发送接收函数
virtual void RuleLoop(void)
处理收数防止接收数分两次传送情况
void PreUnpackData(BYTE bRead)
验证接收数校验码
bool CheckRevCode(void)
计算发送数校验码
void CheckSendCode(int no)
解包整理数
void UnpackData(void)
包函数
void PackData(void)
区分功码代号
int GetFunType(enum FUNC_TYPE &eFunc)
存储遥测数值60870系列格式
void PutYC(void)
存储遥信值
void PutYX(void)
存储事件进队列
void PutSOE(void)
存储电度值
void PutDD(void)
存储遥控返校信息
void PutYK(enum INFO_TYPE eType bool bFailFlag false)
存储频率值
void PutHZ(void)
16进制数转换成BCD码
int HexToBCD(unsigned char bHex)
超时检测
int TimeCheck(void)
测试模拟遥信信息
void TestPutYX(void)
测试模拟SOE
void TestPutSOE(void)
测试间隔段时间送遥信信息
int TimeTest()
}
#endif
********************************************************
******************************************************************
* All rights reserved
*
* 文件名称:coreargh
******************************************************************
#ifndef _CORE_ARG_H
#define _CORE_ARG_H
#if _MSC_VER>1000
#pragma warning(disable 4786)
#endif
#include
#include