[英]Getting data into a uint8_t array (C/C++) on Arduino
我在 Arduino 上使用 C/C++ 工作,並且無法將我需要的內容放入 uint8_t 類型的數組中。 C/C++ 不是我熟悉的語言(我是 python / php / 基本人),所以我目前正在努力尋找合適的術語/文檔。
基本上,以下內容顯示在示例中,並且有效:
static uint8_t mydata[] = "Hello";
我以后想用別的東西完全替換這個的內容。
String Temp = "31.0";
String Hum = "60.0";
String Measurements = "";
Measurements = Temp + "C" + Hum + "H";
mydata[0] = ""; //Reset the array contents? Not sure.
uint8_t mydata[] = Measurements;
上面的代碼示例導致編譯器出現以下錯誤:
error: initializer fails to determine size of 'mydata'
uint8_t mydata[] = Measurements;
^~~~~~
error: array must be initialized with a brace-enclosed initializer
uint8_t mydata[] = Measurements;
^~~~~~~~~~~~
initializer fails to determine size of 'mydata'
關於我如何處理這個問題的任何建議? 我看到static uint8_t mydata[] = "Hello";
的第一個實例被使用不需要聲明數據的大小。 如果我更改為uint8_t mydata[0] = Measurements;
然后長度警告消失,但我留下了一個數組必須用大括號括起來的初始化程序初始化的消息。
對於嵌入式代碼,緊湊性是關鍵。 像這樣使用用戶定義的結構。
struct Temperature{
uint8_t temp[7];
uint8_t humi[7];
Temperature(){temp[0] = humi[0] ='\0';}
Temperature(uint8_t * t, uint8_t *h){strcpy(temp,t); strcpy(humi,h);}
void reset(){ temp[0] = humi[0] ='\0';}
void setTemp(uint8_t* t){strcpy(temp,t);}
void setHum(uint8_t* h){strcpy(humi,h);}
void print(){ char str[16]; sprintf(str,"Temp=%4.2f Hum=%4.2f", atof(temp), atof(humi)); Serial.println(str);}
void operator=(Temperature other){ strcpy(temp,other.temp); strcpy(humi,other.humi);}
};
void loop() {
Temperature temp1;
temp1.reset();
temp1.setTemp("52.34");
temp1.setHum("30");
Temperature temp2;
temp2 = temp1;
temp2.print();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.