一、简介
“碰一碰”设施管制,依靠NFC短距通信协议,通过碰一碰的交互方式,将OpenAtom OpenHarmony(简称“OpenHarmony”)规范零碎设施和全场景设施连接起来,解决了利用与设施之间接续慢、传输难的问题,实现一碰拉起利用,为用户带来无缝切换的晦涩体验。
二、“碰一碰”设施管制场景
(1)应用成果
当树莓派开发板凑近小熊派开发板,树莓派中应用程序被拉起,进入LED小灯管制界面。而后,管制端和设施端实现配网通信连贯,点击关上小熊派LED小灯点亮,点击敞开LED小灯燃烧。
(2)操作流程
• 在小熊派的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("开始调起利用\r\n"); pthread_t id1; int ret = pthread_create(&id1, NULL, (void *)mythread1, NULL); if (ret) { HILOGE("创立线程失败\r\n"); } 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小灯的关上和敞开管制。
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/l...
https://gitee.com/isrc_ohos/l...
参考地址
设施端源码https://gitee.com/isrc_ohos/l...
利用端源码https://gitee.com/isrc_ohos/l...
常识体系https://gitee.com/openharmony...