Bridge類別算是Bridge程式庫裡其他類別的苦力,當其他類別需要在Yún的Arduino端與Linux端之間溝通時,其實都是透過Bridge類別來完成。
Bridge類別提供了put與get方法(另外還有transfer方法),可讓我們在Linux端的記憶體裡存放鍵值配對,這一篇試著玩玩看。
存放的地方是AR9331的RAM,所以若Linux端的Bridge軟體部分重置的話,東西就會消失,譬如拔插電源、重置Linux處理器、透過WiFi或Ethernet上傳草稿碼,都會造成重置Linux端的Bridge軟體;但若重置ATmega32U4並不影響。
範例程式如下,會先存放四個鍵值配對,然後讀取序列埠,根據讀到的鍵取回相對的值。
#include <Bridge.h>
void setup() {
Serial.begin(19200);
while(!Serial)
;
Serial.print("Starting Bridge...");
Bridge.begin(); // 啟動Bridge,阻斷式呼叫
Serial.println("done.");
// 存放東西,參數是鍵與值,都是一般C字串型別
Bridge.put("a", "101");
Bridge.put("b", "abcd");
Bridge.put("c", "!@#$%");
Bridge.put("d", "0.77");
}
void loop() {
if(Serial.available()){
char c = Serial.read();
char k[2];
k[0] = c;
k[1] = '\0';
char buf[10];
// 參數是鍵、存放值的緩衝區,緩衝區的大小
Bridge.get(k, buf, 10); // 傳入鍵、取回值
Serial.println(buf);
}
}
執行結果如下,輸入a、b、c、d可取回相對應的鍵,並輸出序列埠監控視窗。
參考資料:
您好,最近剛摸 Arduino Yun,在官網找到了Http Client的範例
ReplyDelete但是code裡是用get取值,感覺挺不安全的,使用post會比較麻煩嗎?
不懂你的意思。
DeleteHttpClient(http://arduino.cc/en/Reference/YunHttpClientConstructor)與YunClient(http://arduino.cc/en/Reference/YunClientConstructor),都沒有post這個API吧。
老師您好,學生想詢問
ReplyDeletechar k[2](2代表是甚麼值呢)
Bridge.get(k, buf, 10);(10代表是甚麼值呢?)
代表k陣列的空間是兩個char。
Delete10代表buf的大小是10個char,char等於一個byte。
謝謝老師給予協助,學生受益良多!
Delete