相关疑难解决方法(0)

如何在二进制中输出int?

int x = 5;
cout<<(char)x;
Run Code Online (Sandbox Code Playgroud)

上面的代码在原始二进制文件中输出一个int x,但只有1个字节.我需要它做的是输出x作为二进制4字节,因为在我的代码中,x可以是0到2 ^ 32-1之间的任何地方,因为

cout<<(int)x;
Run Code Online (Sandbox Code Playgroud)

不做的伎俩,我该怎么做?

c++ binary type-conversion

15
推荐指数
2
解决办法
4万
查看次数

将浮点型数据从 Arduino 发送到 Python

我需要从 Python 向 Arduino 发送浮点数据并获取相同的值。我想先从 Arduino 发送一些浮点数据。数据以 4 个连续字节的形式发送。我试图弄清楚如何收集这些连续的字节并在Python端(系统端)将其转换为正确的格式

Arduino代码:

void USART_transmitdouble(double* d)
{
    union Sharedblock
    {
        char part[4];
        double data;

    } my_block;
    my_block.data = *d;
    for(int i=0;i<4;++i)
    {
        USART_send(my_block.part[i]);
    }


}

int main()
{
    USART_init();
    double dble=5.5;
    while(1)
    {
       USART_transmitdouble(&dble);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Python代码(系统端):

my_ser = serial.Serial('/dev/tty.usbmodemfa131',19200)

while 1:
    #a = raw_input('enter a value:')
    #my_ser.write(a)
    data = my_ser.read(4)
    f_data, = struct.unpack('<f',data)
    print f_data
    #time.sleep(0.5)
Run Code Online (Sandbox Code Playgroud)

使用struct上面代码中所示的模块可以打印浮点值。

50% 的时间,数据打印正确。但是,如果我弄乱time.sleep()或停止传输并重新启动它,则会打印出错误的值。我认为在这种情况下,解包的 4 个字节集是错误的。您知道我们可以在这里做什么吗?

除了使用 struct 模块向 Arduino 发送和接收浮点数据之外,还有其他想法吗?

c python atmega arduino

5
推荐指数
1
解决办法
7685
查看次数

标签 统计

arduino ×1

atmega ×1

binary ×1

c ×1

c++ ×1

python ×1

type-conversion ×1