我在Linux机器(x64)和微控制器(Arduino Uno)之间用C ++串口连接交换结构。结构现在基本上如下。
struct __attribute__ ((packed)) packet
{
uint8_t data[12];
}
对于小于32的数字,微控制器上的发送和读取是正常的,但更大的数字不一样。像32,变成96,33变成97等等。
packet my_packet;
for (int i = 0; i < 12; ++i)
{
my_packet.data[i] = i;
}
if(write(fd, &my_packet, sizeof(packet))>0)
{
printf("received:\n");
}
else
{
printf("Error writing\n");
}
在阅读方面,
int ret = read(fd, &my_packet_rev, sizeof(my_packet_rev));
if( ret < 0)
{
printf("Error reading\n");
exit(0);
}
else if (ret == 0 )
{
printf("No response\n");
}
else
{
printf("received:\n");
for (int i = 0; i < 12; ++i)
{
printf("%02X, ", my_packet_rev.data[i]);
}
printf("\n");
}
输入:
1E 1F 20 21 22 23 24 25 26 27 28 29
输出:
1E 1F 60 61 62 63 64 65 66 67 68 69
我可能做错了什么?