賈振興
中國(guó)科學(xué)院軟件研究所
OpenHarmony知識(shí)體系工作組
以下內(nèi)容來自嘉賓分享一、簡(jiǎn)介
“碰一碰”設(shè)備控制,依托NFC短距通信協(xié)議,通過碰一碰的交互方式,將OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)標(biāo)準(zhǔn)系統(tǒng)設(shè)備和全場(chǎng)景設(shè)備連接起來,解決了應(yīng)用與設(shè)備之間接續(xù)慢、傳輸難的問題,實(shí)現(xiàn)一碰拉起應(yīng)用,為用戶帶來無(wú)縫切換的流暢體驗(yàn)。二、“碰一碰”設(shè)備控制場(chǎng)景
(1)使用效果當(dāng)樹莓派開發(fā)板靠近小熊派開發(fā)板,樹莓派中應(yīng)用程序被拉起,進(jìn)入LED小燈控制界面。然后,控制端和設(shè)備端完成配網(wǎng)通信連接,點(diǎn)擊打開小熊派LED小燈點(diǎn)亮,點(diǎn)擊關(guān)閉LED小燈熄滅。 (2)操作流程- 在小熊派的NFC被動(dòng)貼片中寫入控制端應(yīng)用信息
- 將樹莓派的PN532主動(dòng)板靠近小熊派NFC貼片,讀取貼片中的應(yīng)用信息,拉起對(duì)應(yīng)的小燈控制應(yīng)用
- 控制端和設(shè)備端完成配網(wǎng)通信連接
- 點(diǎn)擊打開小熊派LED小燈點(diǎn)亮,點(diǎn)擊關(guān)閉LED小燈熄滅
三、NFC拉起應(yīng)用功能實(shí)現(xiàn)
近場(chǎng)通信(Near Field Communication,簡(jiǎn)稱NFC),是一種新興的技術(shù),使用了NFC技術(shù)的設(shè)備可以在彼此靠近的情況下進(jìn)行數(shù)據(jù)交換,是由非接觸式射頻識(shí)別(RFID)演變而來。NFC技術(shù)在現(xiàn)實(shí)場(chǎng)景中被廣泛使用,通過在單一芯片上集成感應(yīng)式讀卡器、感應(yīng)式卡片和點(diǎn)對(duì)點(diǎn)通信的功能,利用移動(dòng)終端實(shí)現(xiàn)移動(dòng)支付、門禁、移動(dòng)身份識(shí)別、防偽等應(yīng)用。NFC的點(diǎn)對(duì)點(diǎn)模式需要主動(dòng)板和被動(dòng)板兩個(gè)模塊,該案例中樹莓派的PN532模塊是主動(dòng)板用于讀取信息,小熊派開發(fā)板的NFC貼片是被動(dòng)板用于保存信息。
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("開始調(diào)起應(yīng)用
"); pthread_t id1; int ret = pthread_create(&id1, NULL, (void *)mythread1, NULL); if (ret) { HILOGE("創(chuàng)建線程失敗
"); } sleep(4); }}/**拉起設(shè)備控制應(yīng)用的線程*/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功能的實(shí)現(xiàn)需要調(diào)用驅(qū)動(dòng)文件中相應(yīng)的接口函數(shù)。I2C_Init函數(shù)實(shí)現(xiàn)樹莓派PN532模塊的初始化。PN532_ReadPassiveTarget函數(shù)用于實(shí)現(xiàn)循環(huán)讀取NFC貼片的UID信息,當(dāng)讀到小熊派NFC貼片信息時(shí),創(chuàng)建新的線程拉起對(duì)應(yīng)的LED燈應(yīng)用。
四、LED小燈應(yīng)用功能實(shí)現(xiàn)
該案例中LED小燈應(yīng)用,主要基于TCP通信協(xié)議實(shí)現(xiàn)對(duì)小熊派LED小燈的打開和關(guān)閉控制。 ?
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: "網(wǎng)絡(luò)斷開",
});
}
}).catch(err => {
console.log("[led Controller]" + err)
})
},
ledOpen() {
this.tcpSend("1")
},
changeText() {
prompt.showToast({
message: "配網(wǎng)成功",
});
},
ledClose() {
this.tcpSend("0")
}
}
上述代碼中,通過import led_controller from '@ohos.led_controller'引入NAPI動(dòng)態(tài)庫(kù),led_controller動(dòng)態(tài)庫(kù)中封裝TCP通信相關(guān)的接口函數(shù)。
五、總結(jié)
本文介紹了如何使用NFC實(shí)現(xiàn)OpenHarmony“碰一碰”設(shè)備控制。首先,需要基于樹莓派PN532模塊驅(qū)動(dòng)開發(fā)NFC智能感知的應(yīng)用,實(shí)現(xiàn)設(shè)備間碰一碰發(fā)現(xiàn)的功能。然后,基于NAPI開發(fā)設(shè)備間的TCP通信業(yè)務(wù),并在應(yīng)用層調(diào)用接口函數(shù)實(shí)現(xiàn)LED小燈的開閉。除了文中分享的樣例,開發(fā)者還可以通過拓展其他相關(guān)的屬性和方法,實(shí)現(xiàn)更多好玩的、高性能的樣例。代碼地址:
https://gitee.com/isrc_ohos/led-contrller-device
https://gitee.com/isrc_ohos/led-controller-application
本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑?/span>微信EEFans0806,或者發(fā)郵箱liuyong@huaqiu.com。
熱門推薦干貨好文
1、24Bit ADC高精度低功耗MCU 醫(yī)療級(jí)別設(shè)備參考設(shè)計(jì)(附上高精確算法+電路原理圖)
2、超強(qiáng)性能AI芯片,OpenHarmony多系統(tǒng)支持,可定制高性能AP(附10+開發(fā)Demo)
3、從零入門物聯(lián)網(wǎng)OH開源平臺(tái),從簡(jiǎn)單到高階項(xiàng)目,創(chuàng)客、電子愛好者都愛用!
4、低成本ESP32方案,支持OpenHarmony系統(tǒng)開發(fā)(附10+項(xiàng)目樣例Demo)
5、NO RTOS移植!32位、64線程開發(fā)板,超強(qiáng)實(shí)時(shí)性體驗(yàn)!
6、四核64位,超強(qiáng)CPU ,看RK3568“競(jìng)”開發(fā)板DEMO!
7、人工智能也能這么玩, 簡(jiǎn)單快速入手,還能自定義AI運(yùn)算
8、業(yè)界首款!支持富設(shè)備開發(fā),OpenHarmony開發(fā)者都選它!
9、高性能雙核RISC-V,滿足大多數(shù)開發(fā),這款國(guó)產(chǎn)MCU工程師都愛了!
原文標(biāo)題:【玩轉(zhuǎn)OH】如何實(shí)現(xiàn)樹莓派“碰一碰”設(shè)備控制
文章出處:【微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
電子技術(shù)
+關(guān)注
關(guān)注
18文章
873瀏覽量
55761 -
電子發(fā)燒友論壇
+關(guān)注
關(guān)注
4文章
197瀏覽量
1040
原文標(biāo)題:【玩轉(zhuǎn)OH】如何實(shí)現(xiàn)樹莓派“碰一碰”設(shè)備控制
文章出處:【微信號(hào):gh_9b9470648b3c,微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論