Browse Source

修改写入数据模块,添加计算写入数据字节数模块

Modbus_TCP
zcn1123 4 years ago
parent
commit
2cd2fae78f
1 changed files with 24 additions and 10 deletions
  1. +24
    -10
      Modbus_communication/Modbus_TCP/common.cpp

+ 24
- 10
Modbus_communication/Modbus_TCP/common.cpp View File

@@ -171,6 +171,7 @@ unsigned int Input_Operations_Number(int Function_code)
} while (flage);
return Operations_Number;
}

/*********************************************************************************************
* 功能    : 检测写入数据
* 描述   : 检测写入数据格式是否正确
@@ -212,18 +213,14 @@ bool Check_Write_date(string Write_date, int Write_date_number)
}

/*********************************************************************************************
* 功能    : 输入写入数据
* 描述   : 根据写入数量和功能码类型输入相应的数据
* 输入 : Function_code 选择的功能码类型 Operations_Number对应 功能码类型的操作数量
* 输出 : Write_date 写入的数据
* 功能    : 计算写入数据的字节数
* 描述   : 通过对应的功能码和操作数量计算对应的数据字节数
* 输入 : Function_code 选择的功能码类型 Operations_Number对应功能码类型的操作数量
* 输出 : Write_date_number 写入数据的字节数
*********************************************************************************************/
string Write_date(int Function_code, unsigned int Operations_Number)
unsigned int Count_Write_date_number(int Function_code, unsigned int Operations_Number)
{
int i = 1;
string Write_date;
unsigned int Write_date_number;
if (Function_code == 0x01 || Function_code == 0x03)
return Write_date;//读线圈不需要输入写入数据
unsigned int Write_date_number = 0;
if (Function_code == 0x0F) //读线圈
{
Write_date_number = Operations_Number / 8;
@@ -232,6 +229,23 @@ string Write_date(int Function_code, unsigned int Operations_Number)
}
if (Function_code == 0x10)
Write_date_number = Operations_Number * 2;
return Write_date_number;
}

/*********************************************************************************************
* 功能    : 输入写入数据
* 描述   : 根据写入数量和功能码类型输入相应的数据
* 输入 : Function_code 选择的功能码类型 Operations_Number对应功能码类型的操作数量
* 输出 : Write_date 写入的数据
*********************************************************************************************/
string Write_date(int Function_code, unsigned int Operations_Number)
{
int i = 1;
string Write_date;
unsigned int Write_date_number = Count_Write_date_number(Function_code, Operations_Number);
if (Function_code == 0x01 || Function_code == 0x03)
return Write_date;//读线圈/寄存器不需要输入写入数据
printf("请输入N组写入数据(2位16进制为一组,空格间隔)例如:00 00 01 00 20 05\n");
do
{


||||||
x
 
000:0
Loading…
Cancel
Save