我对编程有点新意,如何在message
中存储变量?我正在尝试使用LoRa制作无线温度传感器,带有Arduino Uno + Dragino防护罩。结果将显示在物联网上。其他一切都很好。为什么我会收到下面写的错误? {temp}
也不起作用。
CODE:
int temp = 25;
// Payload to send (uplink)
static uint8_t message[] = temp;
错误:
HelloWorld1:77: error: initializer fails to determine size of 'message'
static uint8_t message[] = temp;
^
HelloWorld1:77: error: array must be initialized with a brace-enclosed initializer
Multiple libraries were found for "lmic.h"
Used: C:\Users\\Documents\Arduino\libraries\arduino-lmic-master
Not used: C:\Program Files (x86)\Arduino\libraries\arduino-lmic-master
exit status 1
initializer fails to determine size of 'message'
答案 0 :(得分:0)
编译时,必须知道数组的大小。它可以直接从[]
中的值(例如uint8_t message [2]
)找到它,如果那里没有任何值,则从括号初始化器的长度,即逗号列表中找到它-{1}}中的分隔值,您可以在声明时分配给数组。
除此之外,你不能直接在uint8_t(1字节,无符号)中存储一个int值(2个字节,有符号)。因为(我想)你需要将数据作为uint8_t数组传输,你可以按如下方式进行:
{ }
或
int temp = 25;
// store temp in a uint8_t array with two elements (needed to store two bytes)
uint8_t message[2];
message[0] = temp >> 8; // Most significant byte, MSB
message[1] = temp; // Least significant byte, LSB
Theb传输int temp = 25;
// store temp in a uint8_t array with two elements (needed to store two bytes)
uint8_t message[2] = {(temp >> 8), temp};
message[0] = temp >> 8; // Most significant byte, MSB
message[1] = temp; // Least significant byte, LSB
,并在接收器上将其“重新转换”为int:message
。