gpt4 book ai didi

c++ - 如何将 uint8_t 放入 char 数组中?

转载 作者:行者123 更新时间:2023-11-28 03:34:43 25 4
gpt4 key购买 nike

我正在尝试使用串行通信将一些数据发送到设备:

void VcpBridge::write_speed(char address, int spd) {
uint8_t speed = (uint8_t)(127);
ROS_ERROR("VCP BRIDGE: Sending %u to %u", speed, address);
char msg[8];
char command = 0x55, size = 0x02, csum;
csum = speed + 0x64 + address;
sprintf(msg, "%c%c%c%c%c%c", command, address, speed, size, 0x64, csum);
ROS_ERROR(msg);
write(fd_, msg, 6);
}

ROS_ERRORprintf 的作用相同。

一切正常,除非 speed 的值超过 127。然后它总是在它的位置打印一个 ? 并且设备没有接收到正确的信息。你知道任何正确转换的方法吗?我试过 %u 但程序崩溃了。

最佳答案

没有充分的理由在您的示例中使用 sprintf。试试这个:

void VcpBridge::write_speed(char address, int spd) {
uint8_t speed = (uint8_t)(127);
ROS_ERROR("VCP BRIDGE: Sending %u to %u", speed, address);
char command = 0x55, size = 0x02, csum;
csum = speed + 0x64 + address;
ROS_ERROR(msg);
char msg[] = { command, address, speed, size, 0x64, csum};
write(fd_, msg, sizeof msg);
}

关于c++ - 如何将 uint8_t 放入 char 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11317506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com