シリアル通信を使用してデバイスにデータを送信しようとしています:
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_ERROR
ここでは と同じprintf
です。
speed
の値が127 を超える場合を除いて、すべて正常に動作します。その場合、常に?
その位置に a が出力され、デバイスは正しい情報を受信しません。正しくキャストする方法を知っていますか?試してみまし%u
たが、プログラムがクラッシュします。