📄 porttrans.h
字号:
/*
类名:CPortTrans
作者:陈峰
功能:完成对串口的操作。包括 串口参数设置,串口读写操作,串口数据翻译,串口控制
最后修改日期:2006年9月19日
*/
#if !defined(AFX_ComTTRANS_H__4128D81E_18BC_4758_B15B_DB289C0CD62A__INCLUDED_)
#define AFX_ComTTRANS_H__4128D81E_18BC_4758_B15B_DB289C0CD62A__INCLUDED_
#include "stdlib.h"
#include "ErrorCode.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CPortTrans
{
/*----------------构造与析构-----------*/
public:
CPortTrans ();
virtual ~CPortTrans ();
/*----------------串口参数--------------*/
private:
//串口名
char m_iComName;
//波特率
int m_iBaudRate;
//奇偶校验
int m_iParity;
//数据宽度
int m_iByteSize;
//停止位
int m_iStopBits;
//超时计数
int m_iTimeCount;
//串口控制结构
DCB m_Dcb;
//文件句柄
HANDLE m_Handle;
//串口打开标志 true 打开 false 没有打开
bool m_bOpenFlag;
/*------------存储信息--------------*/
private:
//通用数据
float m_fEQcommdata;
//pv 温度
float m_fPVData;
//sv 温度
float m_fSVData;
//错误信息
int m_iErrorNumber;
char m_pErrorData[50];
//设备号码
int m_iEquipmentAddress;
//数据缓冲区
char m_pBuffer[15];
//设备数据
char * m_pEQData;
public:
/*--------------------串口设置---------------*/
/*
函数名:bool InitComExt(int nCom, int nBaudRate, int nParity, int nByteSize, int nStopBits, nTimeoutt)
功能:利用传入的参数,初始化CPortTrans的对象
参数说明:pCom 为串口名 nBaudRate-波特率 nParity -奇偶校验 nByteSize - 数据宽度 nStopBits-停止位 nTimeout 超时连接次数
返回值说明:true 初始化成功 ,false 初始化失败
举例:bool flag = InitComExt(1,9600,0,7,1,5);//初始化串口名位com1,波特率为 9600,无校验,数据位为7位,停止位 1位 连接5次不成功认为超时
备注:altc808串口配置 串口名:具体机器,波特率 9600,奇偶校验 2,数据位 7,停止位 0,通信方式 :同步,
*/
bool InitComExt(int nCom, int nBaudRate, int nParity,
int nByteSize, int nStopBits,int nTimeout);
/*
函数名:bool OpenCom()
功能:根据对象内部串口变量打开串口
参数说明:无参数
返回值说明:true --打开成功 false -打开失败
举例:OpenCom();//打开串口
*/
bool OpenCom();
/*
功能说明:关闭串口
参数说明:无参数
返回值说明:true -- 关闭成功 false --关闭失败
举例:bool flag = CloseCom() //关闭串口
*/
bool CloseCom();
/*
函数名:bool SetCom(const int Pro,int Value)
功能:设置串口某个属性
参数说明:Pro,串口的属性编号,Value 设定值
返回值说明: true 设置成功 ,false 设置失败
举例:SetCom(0,1); //设置串口名为com1
备注:
*/
bool SetCom(const int Pro,int Value);
/*
函数名:int GetComSet(const int Pro)
功能:获得一个串口属性值
参数说明:Pro - 属性值编号
返回值说明:返回串口的设置,对应设置没有,返回-100
举例:GetComSet(1);//获取串口的波特率
备注:属性编号
0 串口名
1 波特率
2 奇偶校验
3 数据宽度
4 停止位
*/
int GetComSet(const int Pro);
/*--------------------串口操作--------------*/
/*
函数名:void ReadFromCom(char* pData)
功能:从串口读数据,将串口的数据复制给pData
参数说明:pData-保存串口复制数据, nlength pData长度,扩展变量
返回值说明:无返回值
*/
void ReadFromCom(char* pData,int nLength);
/*
函数名:void WritToCom(char* pData, int nLength)
功能说明:向串口写数据
参数说明: pData - 向串口所要写的字符串指针,nlength pData长度,扩展变量
返回值说明:无返回值
举例:char *str;
string = "123d56bk7 "
WritToCom(str,sizeof(str))\\向串口写入"123d56bk7 "
*/
void WritToCom(char * pData, int nLength);
/*
函数名:bool OperateCom(char * pstrCommand,bool bSetFlag=false)
功能: 向串口发送pstrCommand命令字符串 ,进行连接测试和返回数据有效性校验,如果连接
正常并且返回数据有效,返回true,否则返回false;操作过程中发现连接或者无效数据,分别返回COM_LINK_ERROR和DATA_CHECK_ERROR
参数说明:pstrCommand - 命令字符串,bSetFlag = true,发送设置机器命令,false 发送读取设备数据命令
返回值说明:true 操作成功 ,false 操作失败
举例:
char *str = "\x04\x35\x35\x33\x33\x50\x56\x05";
OperateCom(str);//取得通信地址53的仪表pv值
*/
bool OperateCom(char * pstrCommand,bool bSetFlag=false);
/*-------------------设备操作----------------*/
/*
函数名:bool SendEquipmentCommand(const int EquipmentAddress,const int CommandID)
功能:向设备地址为EquipmentAddress设备发送编号为CommandID的命令
参数说明:EquipmentAddress 设备编号或地址 CommandIDwei 为设备命令编号
返回值说明:true -- 成功返回正确数据 。false -- 数据传输过程中出现错误
举例:SendEquipmentCommand(0,1)//向地址为0的设备发送获取sv的命令
备注:CommandID
0 当前温度
1 输出功率
2 当前设定值
3 输出功率
4 al1报警值
5 al2报警值
其它 返回false
*/
bool SendEquipmentCommand(const int EquipmentAddress,const int CommandID);
/*
函数名:bool GetComState()
功能说明:获取串口状态
参数说明:无
返回值说明:串口状态 true 打开的 false 关闭着
举例:
*/
bool GetComState();
/*
函数名:bool SetEquipmentData(const int EquipmentAddress,const int Pro,const int Setvalue)
功能:向设备编号为EquipmentAddress,发送设置属性编号为pro的属性值为Setvalue的命令
参数说明:EquipmentAddress 设备编号 pro 属性编号 Setvalue 设定属性的值
返回值说明:true - 设定成功 false 设定失败
举例:SetEquipmentData(12,2,788)//设定编号为12的al2报警值为788
备注:Pro
0 运行目标值(设定值)
1 al1报警值
2 al2报警值
其它函数返回FALSE
*/
bool SetEquipmentData(const int EquipmentAddress,const int Pro,const int Setvalue);
/*
函数名:bool SendGetPVCommand(const int EquipmentAddress)
功能:向设备地址为EquipmentAddress的设备发送获取当前温度(pv)的值的命令
参数说明:EquipmentAddress 设备编号
返回值说明:true --成功返回 false --出现错误
举例:SendGetPVCommand(3)//获取编号为3的设备pv值
*/
bool SendGetPVCommand(const int EquipmentAddress);
/*
函数名:bool SendGetSVCommand(const int EquipmentAddress)
功能:向设备地址为EquipmentAddress的设备发送获取当前温度(sv)的值的命令
参数说明:EquipmentAddress 设备编号
返回值说明:true --成功返回 false --出现错误
举例:SendGetPVCommand(3)//获取编号为3的设备sv值
*/
bool SendGetSVCommand(const int EquipmentAddress);
/*-------------------数据处理---------------*/
/*
函数名:float TransGetData()
功能:将串口读取的数据提取数值部分
参数说明:无参数
返回值说明:返回串口数据中数值
*/
float TransGetData();
/*
函数名:bool CheckComData(bool bCheckSet = false)
功能:检验数值有效性
参数说明:bCheckSet - 是否是校验设置设备返回信息 false - 不是 true 是,nEquipmentAddress= 设备地址
返回值说明:true 有效数据/或者设置成功 false-无效数据/或者设置失败
*/
bool CheckComData(bool bCheckSet = true,int nEquipmentAddress =-100);
/*
函数名:char * ConvertData(long data)
功能:转换data为字符串
参数说明:data 要转换的整形数据
返回值说明:转换后的字符串
举例:char *str = ConvertData(450)//str ="450"
*/
char * ConvertData(long data);
/*
函数名:char * ConvertAdress(int address)
功能:将address转换成协议所需要的字符串
参数说明: address - 要转换的地址
返回值说明:转换好的字符串
举例:char *str = ConvertAdress(24);//str="2244"
*/
char * ConvertAdress(int address);
/*
函数名:char GetBCC(char * pchars,int nLenth)
功能说明:计算BCC校验字符
返回值:BCC位字符
参数说明:pchars = STX(不包含) - ETX字符串(包含),nLenth = 字符串长度
*/
char GetBCC(char * pchars,int nLenth);
/*
函数名:float GetPVData()
功能说明:获取pv数据
参数说明:无
返回值说明:pv数据
*/
float GetPVData();
/*
函数名:float GetSVData();
功能: 获取sv数据
参数说明:无
返回值说明:sv数据
*/
float GetSVData();
/*
函数名:float GetEquipmentData()
功能: 获取设备数据
参数说明:无
返回值说明:设备数据
*/
float GetEquipmentData();
/*----------------错误处理--------------*/
/*
函数名:void SetErrorData(int ErrorNumber,char * ErrorString)
功能: 设置错误信息
参数说明:ErrorNumber 错误编号 ErrorString 错误文本,EquipmentAddress 设备地址,-100为串口错误
返回值说明:无
举例:SetErrorData(DATA_CHECK_ERROR ,"设置错误")//设置错误编号为1的错误文本-"设置错误"
*/
void SetErrorData(int ErrorNumber,char * ErrorString,int EquipmentAddress = -100);
/*
函数名:int GetLastErrorNumber()
功能: 获取最后一条错误编号
参数说明:无
返回值说明:返回最后一条错误的编号
编号说明:0 正常,1 串口连接错误,2数据校验错误 3数据获取错误 4数据设置错误 5 串口属性设置错误 6 串口属性读取错误
*/
int GetLastErrorNumber();
/*
函数名:char * GetLastErrorText()
功能:获得错误信息
参数说明:无
返回值说明:最后一条错误信息文本
*/
char * GetLastErrorText();
};
#endif // !defined(AFX_ComTTRANS_H__4128D81E_18BC_4758_B15B_DB289C0CD62A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -