⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 porttrans.h

📁 一个dll演示代码 用于串口通信的。 类似于工控的驱动
💻 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 + -