g0b1vetx-board/middleware/modbus/modbus-m.c
2023-05-03 18:18:03 +08:00

33 lines
655 B
C

/* modbus 主机实现*/
#include<stdint.h>
#include "crc.h"
// 读取保持寄存器的值
// addr 寄存器地址
// id 丛机地址
// length 读取丛机数据长度
int modbus_m_read_regist(uint8_t id,uint16_t addr,uint16_t length,uint8_t * data)
{
uint16_t index = 0,crc;
data[index++] = id;
data[index++] = 0x03;
data[index++] = (addr >> 8) & 0x00FF;
data[index++] = addr & 0x00FF;
data[index++] = (length >> 8) & 0x00FF;
data[index++] = length & 0x00FF;
crc = MX_CRC_CALC(data,index);
data[index++] = crc & 0x00FF;
data[index++] = (crc >> 8) & 0x00FF;
return index;
}
//// 解析通过03 命令读取回来额寄存器数据
//int modbus_m_read_regist_ack(uint)
//{
//
//}