通过串行连接C ++发送结构

时间:2017-09-11 14:31:15

标签: c++ c linux serial-port

我在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

我可能做错了什么?

0 个答案:

没有答案