|
|
@@ -290,4 +290,44 @@ void Crate_MBAP(UINT8 *Message, int Function_code, unsigned int Operations_Numbe |
|
|
|
Message[4] = 0x00; |
|
|
|
Message[5] = Count_Write_date_number(Function_code, Operations_Number) + 0x06; |
|
|
|
Message[6] = DEVICE_ID; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/********************************************************************************************* |
|
|
|
* 功能 : 字符串转UINT8类型 |
|
|
|
* 描述 : 根据写入数量和功能码类型输入相应的数据 |
|
|
|
* 输入 : *Message 消息帧存放的数组 Write_date 要转换的字符串 |
|
|
|
* Message_len消息帧数组的起始位置 |
|
|
|
* 输出 : Message_len 消息帧的长度 |
|
|
|
*********************************************************************************************/ |
|
|
|
int HexStringtoByte(UINT8 *Message, string Write_date, int Message_len) |
|
|
|
{ |
|
|
|
const char *b = Write_date.c_str(); |
|
|
|
for (int i = 0; i + 3 < Write_date.length(); i = i + 3) |
|
|
|
{ |
|
|
|
sscanf_s(b + i, "%02X", (int *)(Message + Message_len)); |
|
|
|
Message_len++; |
|
|
|
} |
|
|
|
sscanf_s(b + Write_date.length() - 2, "%02X", (int *)(Message + Message_len)); |
|
|
|
return ++Message_len; |
|
|
|
} |
|
|
|
|
|
|
|
/********************************************************************************************* |
|
|
|
* 功能 : 生成TCP模式下的消息帧 |
|
|
|
* 描述 : 根据要写入的数据生成消息帧 |
|
|
|
* 输入 : *Message 消息帧存放的数组 Write_date 写入数据的字符串 |
|
|
|
* Function_code 功能码 Operations_Number 操作数量 Starting_address起始地址 |
|
|
|
* 输出 : 消息帧的总长度 |
|
|
|
*********************************************************************************************/ |
|
|
|
int Crate_TCP_Message(UINT8 *Message, int Function_code, unsigned int Operations_Number, unsigned int Starting_address, string Write_date) |
|
|
|
{ |
|
|
|
|
|
|
|
Crate_MBAP(Message, Function_code, Operations_Number); |
|
|
|
Message[7] = Function_code;//功能码 |
|
|
|
Message[8] = Starting_address >> 8;//起始地址H |
|
|
|
Message[9] = Starting_address;//起始地址L |
|
|
|
Message[10] = Operations_Number >> 8;//操作数量H |
|
|
|
Message[11] = Operations_Number;//操作数量L |
|
|
|
|
|
|
|
return HexStringtoByte(Message, Write_date, 12); |
|
|
|
|
|
|
|
} |