瀏覽代碼

完善部分响应模块

Modbus_RTU
zcn1123 4 年之前
父節點
當前提交
95bb23b6de
共有 3 個檔案被更改,包括 71 行新增37 行删除
  1. +69
    -15
      Modbus_communication/Modbus_RTU_Salve/RTU_Salve.cpp
  2. +2
    -0
      Modbus_communication/Modbus_RTU_Salve/RTU_Salve.h
  3. +0
    -22
      Modbus_communication/Modbus_RTU_Salve/common.cpp

+ 69
- 15
Modbus_communication/Modbus_RTU_Salve/RTU_Salve.cpp 查看文件

@@ -1,28 +1,82 @@
#include "RTU_Salve.h"
#include <bitset>
char read_buf[MAX_NUMBER];

bitset<MAX_Address> Coil_date; //0-9999
UINT16 Register[MAX_Address]; // 0-9999

/*********************************************************************************************
* 功能     :  生成正常响应报文
* 描述    : 经过校验后请求报文可以正常响应
* 输入 : *Requst_Message 请求报文 *Normal_Response_Message 正常响应报文
* 返回值 : 无
**********************************************************************************************/
void Create_Normal_Response_Message(UINT8 *Requst_Message, UINT8 *Normal_Response_Message)
{


}

/*********************************************************************************************
* 功能     :  获取串口读取缓存区中数据的字节数
* 描述    : 向串口写入数据
* 返回值 : 缓存区中数据的字节数
* m_hComm : 串口句柄
********************************************************************************************/
unsigned int GetBytesInCOM(HANDLE m_hComm)
* 功能     :  生成异常响应报文
* 描述    : 经过校验后请求报文可以正常响应
* 输入 : *Requst_Message 请求报文 *Normal_Response_Message 异常响应报文
* 返回值 : 无
**********************************************************************************************/
void Create_Abnormal_Response_Message(UINT8 *Requst_Message, UINT8 *Abnormal_Response_Message)
{


}


void Create_0x01_Response_Message(UINT8 *Requst_Message, UINT8 *Response_Message, unsigned int Address_range)
{
DWORD dwError = 0; /** 错误码 */
COMSTAT comstat; /** COMSTAT结构体,记录通信设备的状态信息 */
memset(&comstat, 0, sizeof(COMSTAT));
if (Address_range > MAX_Address)
{
int Read_Number = Requst_Message[4] << 8 | Requst_Message[5];

}
else
{

unsigned int BytesInQue = 0;
/** 在调用ReadFile和WriteFile之前,通过本函数清除以前遗留的错误标志 */
if (ClearCommError(m_hComm, &dwError, &comstat))
}
}
void Create_0x03_Response_Message(UINT8 *Requst_Message, UINT8 *Response_Message, unsigned int Address_range)
{

}
void Create_0x0F_Response_Message(UINT8 *Requst_Message, UINT8 *Response_Message, unsigned int Address_range)
{

}
void Create_0x10_Response_Message(UINT8 *Requst_Message, UINT8 *Response_Message, unsigned int Address_range)
{

}


/*********************************************************************************************
* 功能     :  生成响应报文
* 描述    : 检查设备请求报文来生成对应功能的响应报文
* 输入 : *Requst_Message 请求报文 *Response_Message响应报文
* 返回值 : true 生成响应报文
* false 不生成响应报文
**********************************************************************************************/
bool Create_Response_Message(UINT8 *Requst_Message, UINT8 *Response_Message)
{
if (Requst_Message[0] != Device_ID) //检查设备ID一致
return false;
unsigned int Address_range = (Requst_Message[2] << 8 | Requst_Message[3]) + (Requst_Message[4] << 8 | Requst_Message[5]);
switch (Requst_Message[1])
{
BytesInQue = comstat.cbInQue; /** 获取在输入缓冲区中的字节数 */
case 0x01:Create_0x01_Response_Message(Requst_Message, Response_Message, Address_range); break;
case 0x03:Create_0x03_Response_Message(Requst_Message, Response_Message, Address_range); break;
case 0x0F:Create_0x0F_Response_Message(Requst_Message, Response_Message, Address_range); break;
case 0x10:Create_0x10_Response_Message(Requst_Message, Response_Message, Address_range); break;
default:
}
return BytesInQue;
return true;
}




+ 2
- 0
Modbus_communication/Modbus_RTU_Salve/RTU_Salve.h 查看文件

@@ -2,5 +2,7 @@
#define __RTU_SALVE_H

#include "common.h"
#define Device_ID 0x09
#define MAX_Address 9999

#endif

+ 0
- 22
Modbus_communication/Modbus_RTU_Salve/common.cpp 查看文件

@@ -302,28 +302,6 @@ BYTE Input_Parity(void)
return Parity;
}

/*********************************************************************************************
* 功能     :  生成正常响应报文
* 描述    : 经过校验后请求报文可以正常响应
* 输入 : *Requst_Message 请求报文 *Normal_Response_Message 正常响应报文
* 返回值 : 无
**********************************************************************************************/
void Crate_Normal_Response_Message(UINT8 *Requst_Message, UINT8 *Normal_Response_Message)
{


}

/*********************************************************************************************
* 功能     :  生成异常响应报文
* 描述    : 经过校验后请求报文可以正常响应
* 输入 : *Requst_Message 请求报文 *Normal_Response_Message 异常响应报文
* 返回值 : 无
**********************************************************************************************/
void Crate_Abnormal_Response_Message(UINT8 *Requst_Message, UINT8 *Abnormal_Response_Message)
{


}



Loading…
取消
儲存