我目前正在使用一个微控制器来设置ASIC和我的PC之间的通信。ASIC通过串行接口向单片机发送数据,单片机通过串口(RS232)向PC机发送数据。
我使用python“记录”数据(通过UART连续发送)。请注意,使用的python程序不是由我编写的,而是由其他一些我无法联系到的人编写的。此外,我没有任何使用python的经验。
下面是我通过UART发送的数据示例:(程序正在计数)
255 -> start byte
0 -> 1 bytes of data
0 -> 1 bytes of data
0 -> 1 bytes of data
8 -> 1 bytes
我想发送一些对象数据,二进制,跨一些单片机。我把它当作一个跨平台的问题。我想如何实施,就像:
//mcu A
//someObj declared and initialized
Send((uint_8_t*)&someObj,sizeof(someObj));
//mcu B
SomeClass someObj;
Read((uint_8_t*)&someObj,sizeof(someObj));
在C/C++中是否有任何保证这样的事情是可能的?
假设有
function f(int8_t a, int8_t b) // a b only need 8 bits
另一种选择是:
function f(int32_t a, int32_t b) // a b only need 8 bits
它运行在32位单片机上,如ARM Cortex_M。在所需的代码大小、数据大小和执行效率方面,哪个选项更好?
如果是像8051这样的8位单片机,int8_t应该会更好,对吧?