![348c45ec-910f-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9F/CD/wKgaomToImeAA5e4AABZ7j8pWOU544.jpg)
賈振興
中國科學院軟件研究所
OpenHarmony知識體系工作組
以下內容來自嘉賓分享一、簡介
“碰一碰”設備控制,依托NFC短距通信協議,通過碰一碰的交互方式,將OpenAtom OpenHarmony(簡稱“OpenHarmony”)標準系統設備和全場景設備連接起來,解決了應用與設備之間接續慢、傳輸難的問題,實現一碰拉起應用,為用戶帶來無縫切換的流暢體驗。二、“碰一碰”設備控制場景
![34979b54-910f-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9F/CD/wKgaomToImeABxeWAAAojxc8nwU389.png)
- 在小熊派的NFC被動貼片中寫入控制端應用信息
- 將樹莓派的PN532主動板靠近小熊派NFC貼片,讀取貼片中的應用信息,拉起對應的小燈控制應用
- 控制端和設備端完成配網通信連接
- 點擊打開小熊派LED小燈點亮,點擊關閉LED小燈熄滅
三、NFC拉起應用功能實現
近場通信(Near Field Communication,簡稱NFC),是一種新興的技術,使用了NFC技術的設備可以在彼此靠近的情況下進行數據交換,是由非接觸式射頻識別(RFID)演變而來。NFC技術在現實場景中被廣泛使用,通過在單一芯片上集成感應式讀卡器、感應式卡片和點對點通信的功能,利用移動終端實現移動支付、門禁、移動身份識別、防偽等應用。NFC的點對點模式需要主動板和被動板兩個模塊,該案例中樹莓派的PN532模塊是主動板用于讀取信息,小熊派開發板的NFC貼片是被動板用于保存信息。
int main(int argc, char **argv) { uint8_t buff[255]; uint8_t uid[MIFARE_UID_MAX_LENGTH]; int32_t uid_len = 0; PN532 pn532; PN532_I2C_Init(&pn532); if (PN532_GetFirmwareVersion(&pn532, buff) == PN532_STATUS_ERROR) { return -1; } PN532_SamConfiguration(&pn532); while (1) { while (1) { // 判斷NFC模塊是否靠近 if (PN532_ReadPassiveTarget(&pn532, uid, PN532_MIFARE_ISO14443A, 1000) != PN532_STATUS_ERROR) { break; } usleep(100); } HILOGI("開始調起應用
"); pthread_t id1; int ret = pthread_create(&id1, NULL, (void *)mythread1, NULL); if (ret) { HILOGE("創建線程失敗
"); } sleep(4); }}/**拉起設備控制應用的線程*/void *mythread1(void) { char arg[500] = "aa start -d 1 -a com.huawei.ohos_car_controller.default -b ohos.samples.jshelloworld"; system(arg); return NULL;}
上述代碼中,NFC功能的實現需要調用驅動文件中相應的接口函數。I2C_Init函數實現樹莓派PN532模塊的初始化。PN532_ReadPassiveTarget函數用于實現循環讀取NFC貼片的UID信息,當讀到小熊派NFC貼片信息時,創建新的線程拉起對應的LED燈應用。
四、LED小燈應用功能實現
該案例中LED小燈應用,主要基于TCP通信協議實現對小熊派LED小燈的打開和關閉控制。![34a18aba-910f-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9F/CD/wKgaomToImeAFYpZAAEic9YPmFY688.png)
import led_controller from '@ohos.led_controller';
export default {
onShow() {
this.tcpConnect();
},
onDestroy() {
this.tcpDistroy();
},
tcpConnect() {
let promise_connect = led_controller.Connect();
promise_connect.then((results) => {
setTimeout(this.changeText(), 9000);
}).catch(err => {
console.log('[led Controller]' + err)
})
},
tcpSend(message) {
let promise_send = led_controller.Send({
data: message
})
promise_send.then((results) => {
if (results.send_status == 1) {
console.log("[led Controller] send success")
}
}).catch(err => {
console.log("[led Controller]" + err)
})
},
tcpDistroy() {
let promise_disconnect = led_controller.Close()
promise_disconnect.then((results) => {
if (results.close_status == 1) {
ConnectionStatus = 0
prompt.showToast({
message: "網絡斷開",
});
}
}).catch(err => {
console.log("[led Controller]" + err)
})
},
ledOpen() {
this.tcpSend("1")
},
changeText() {
prompt.showToast({
message: "配網成功",
});
},
ledClose() {
this.tcpSend("0")
}
}
上述代碼中,通過import led_controller from '@ohos.led_controller'引入NAPI動態庫,led_controller動態庫中封裝TCP通信相關的接口函數。
五、總結
本文介紹了如何使用NFC實現OpenHarmony“碰一碰”設備控制。首先,需要基于樹莓派PN532模塊驅動開發NFC智能感知的應用,實現設備間碰一碰發現的功能。然后,基于NAPI開發設備間的TCP通信業務,并在應用層調用接口函數實現LED小燈的開閉。除了文中分享的樣例,開發者還可以通過拓展其他相關的屬性和方法,實現更多好玩的、高性能的樣例。代碼地址:
https://gitee.com/isrc_ohos/led-contrller-device
https://gitee.com/isrc_ohos/led-controller-application
本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。
熱門推薦干貨好文
1、24Bit ADC高精度低功耗MCU 醫療級別設備參考設計(附上高精確算法+電路原理圖)
2、超強性能AI芯片,OpenHarmony多系統支持,可定制高性能AP(附10+開發Demo)
3、從零入門物聯網OH開源平臺,從簡單到高階項目,創客、電子愛好者都愛用!
4、低成本ESP32方案,支持OpenHarmony系統開發(附10+項目樣例Demo)
5、NO RTOS移植!32位、64線程開發板,超強實時性體驗!
6、四核64位,超強CPU ,看RK3568“競”開發板DEMO!
7、人工智能也能這么玩, 簡單快速入手,還能自定義AI運算
8、業界首款!支持富設備開發,OpenHarmony開發者都選它!
9、高性能雙核RISC-V,滿足大多數開發,這款國產MCU工程師都愛了!
原文標題:【玩轉OH】如何實現樹莓派“碰一碰”設備控制
文章出處:【微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。
-
電子技術
+關注
關注
18文章
920瀏覽量
56346 -
電子發燒友論壇
+關注
關注
4文章
197瀏覽量
1155
原文標題:【玩轉OH】如何實現樹莓派“碰一碰”設備控制
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
GPIO在樹莓派中的應用
樹莓派與Arduino的區別是什么
ARM開發板與樹莓派的比較
樹莓派gpio有什么用,樹莓派gpio接口及編程方法
什么是樹莓派?樹莓派是什么架構的
類樹莓派網關:物聯網應用的新標桿
![類<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>網關:物聯網應用的新標桿](https://file1.elecfans.com/web2/M00/07/17/wKgZombtIG-AAR4rAAH-6_MocZk908.png)
評論