36 lines
1022 B
C++
36 lines
1022 B
C++
#include "line_laser_modbus/device.hpp"
|
|
#include "line_laser_modbus/host.hpp"
|
|
|
|
#include <iomanip>
|
|
#include <iostream>
|
|
|
|
namespace {
|
|
|
|
void print_frame(const line_laser_modbus::ByteVector& frame) {
|
|
for (const std::uint8_t byte : frame) {
|
|
std::cout << std::hex << std::uppercase << std::setw(2) << std::setfill('0')
|
|
<< static_cast<int>(byte) << ' ';
|
|
}
|
|
std::cout << std::dec << '\n';
|
|
}
|
|
|
|
} // 匿名命名空间
|
|
|
|
int main() {
|
|
// 下位机示例:使用内存寄存器表处理一个主站请求。固件在 UART 收齐一个
|
|
// 完整 RTU 帧后,可以调用 process_request() 生成响应。
|
|
line_laser_modbus::DeviceServer device;
|
|
line_laser_modbus::HostClient host;
|
|
|
|
device.bank().set_current_pose(
|
|
line_laser_modbus::Pose6D{1234U, 10.0F, 20.0F, 30.0F, 1.0F, 2.0F, 3.0F});
|
|
|
|
const auto request = host.make_read_current_pose_request();
|
|
const auto response = device.process_request(request);
|
|
|
|
std::cout << "Read current pose response: ";
|
|
print_frame(response);
|
|
|
|
return 0;
|
|
}
|