色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony L1(3.0)串口功能開發

電子發燒友開源社區 ? 來源:未知 ? 2023-03-11 14:15 ? 次閱讀
OpenHarmony 3.0 LTS是面向全場景的開源分布式操作系統,能夠在物聯網上使用。可以支持三種系統類型,標準系統、輕量系統和小型系統。本文提供了在OpenHarmony 3.0 LTS實現串口調試功能的開發方案。

1.編寫代碼生成對應動態庫文件

串口功能開發包括串口初始化、數據讀寫、修改數據開發格式等。具體代碼不便展示。編寫gn文件生成對應動態庫文件
shared_library("serial_service_api") { sources = [ "service/serial_service.cpp" ] include_dirs = ["include","service", ]

2.提供API接口

2.1依賴router模塊開發

如果串口權限不受限制,可以直接在router模塊增加串口相關功能,節省開發時間。foundationaceace_engine_liteframeworkssrccoremodules outer_module.cpp
void InitRouterModule(JSIValue exports)
{
JSI::SetModuleAPI(exports, "replace", RouterModule::Replace);
JSI::SetModuleAPI(exports, "init", RouterModule::Init);
JSI::SetModuleAPI(exports, "format", RouterModule::Format);
JSI::SetModuleAPI(exports, "write", RouterModule::Write);
JSI::SetModuleAPI(exports, "read", RouterModule::ReadFormat);
JSI::SetModuleAPI(exports, "disable", RouterModule::Disable);
JSI::SetModuleAPI(exports, "on", RouterModule::OnRead);    
COMMUNICATION::GetInstance()->SerialRead(RouterModule::ReadingCallback);
}
串口初始化及進制轉換相關代碼可直接調用庫函數。串口讀回調的相關代碼如下:
JSIValue ReadCallback = JSI::CreateUndefined();
void RouterModule::ReadingCallback(const char* buffer, int length)
{
if(!JSI::ValueIsUndefined(ReadCallback) && gSerialFlag){
if(length < 0){
           SERIAL_LOGI("JS ReadingCallback == 0");
           JSIValue evt = JSI::CreateString("error");
           JSI::CallFunction(ReadCallback, JSI::CreateUndefined(), &evt, 1);
return;
       } else if(length >= 0){
           SERIAL_LOGI("JS ReadingCallback == 1");
           JSIValue evt = JSI::CreateString(buffer);
           JSI::CallFunction(ReadCallback, JSI::CreateUndefined(), &evt, 1);
       }
   }
}
JSIValue RouterModule::OnRead(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
{
if(!JSI::ValueIsUndefined(ReadCallback)){
      JSI::ReleaseValue(ReadCallback);
return JSI::CreateBoolean(false);
  }
if (JSI::ValueIsUndefined(args[0])) {
return JSI::CreateBoolean(false);
  }
  ReadCallback = JSI::GetNamedProperty(args[0], "ReadingCallback");
if(JSI::ValueIsUndefined(ReadCallback)){
      SERIAL_LOGI("Read Callbk is not got it");
  }
}
在route模塊增加相關依賴foundationaceace_engine_liteframeworksBUILD.gn
deps = [
"http://device/hals/communication/serial_port:serial_service_api",
]

2.2輕量級服務開發

串口權限受限時,需要啟用輕量級服務,應用可以通過服務,跨進程操作串口。具體配置如下:foundationaceace_engine_liteframeworksmodule_managerohos_module_config.h
extern void InitSerialPortModule(JSIValue exports);const Module OHOS_MODULES[] = {{"serialport", InitSerialPortModule},}
配置服務自啟動:vendor/ingenic/halley5/rootfs-overlay/etc/init.d/S99WmsStart:sleep 1 && /bin/wifi_server &
#! /bin/sh
sleep 1 && /bin/wms_server &
sleep 1 && /bin/wifi_server &
sleep 1 && /bin/util_server &
sleep 1 && /bin/serial_port_service &
配置服務:basesecuritypermissionservicespermission_liteipc_authincludepolicy_preset.h
FeaturePolicy serialServiceFeature[] = {
   {
NULL,
       {
           {
               .type = RANGE,
               .uidMin=0,
               .uidMax=__INT_MAX__,
           }
       },
   },
};
static PolicySetting g_presetPolicies[] = {
   {"serialportservice", serialServiceFeature, 1},
};
代碼實現服務初始化,具體實現可參考wifi_lite相關代碼。在Invoke中去調用串口相關功能**serial_portserial_port_liteservicesamgr_serial_port_service.cpp
//繼承并重新定義服務:
struct SamgrSerialPortService {
   INHERIT_SERVICE;
   INHERIT_IUNKNOWNENTRY(DefaultFeatureApi);
   Identity identity;
};
static const char *GetName(Service *service)
{
//(void)service;
return SERIAL_PORT_SERVICE_NAME;
}
static int32 Invoke(IServerProxy *iProxy, int funcId, void *origin, IpcIo *req, IpcIo *reply)
{
   SerialPortService::RequestHandle(funcId, origin, req, reply);
return EC_SUCCESS;
}
//創建服務對象:
static SamgrSerialPortService SerialPortSvc = {
   .GetName = GetName,
   .Initialize = Initialize,
   .MessageHandle = MessageHandle,
   .GetTaskConfig = GetTaskConfig,
   SERVER_IPROXY_IMPL_BEGIN,
   .Invoke = Invoke,
   IPROXY_END,
};
//向SAMGR注冊服務及接口:
static void Init()
{ 
   SERIAL_LOGI("serial RegisterService Init, ver = %u", SerialPortSvc.ver);
bool ret = SAMGR_GetInstance()->RegisterService((Service *)&SerialPortSvc);
if (!ret) {
       SERIAL_LOGI("RegisterService error");
return;
   }
   ret = SAMGR_GetInstance()->RegisterDefaultFeatureApi(SERIAL_PORT_SERVICE_NAME, GET_IUNKNOWN(SerialPortSvc));
if (!ret) {
       SERIAL_LOGI("RegisterDefaultFeatureApi error");
return;
   }
   SERIAL_LOGI("serial RegisterService out, ver = %u", SerialPortSvc.ver);
}
SYSEX_SERVICE_INIT(Init);

3.開發應用

3.1 簽名配置

使用 DevEco Studio 3.0.0.800 軟件進行應用開發,真機設備運行和調試OpenHarmony應用前,需要對應用進行簽名才能正常運行。主要分為四個步驟:生成密鑰和證書請求文件,生成應用證書文件,生成應用profile文件,配置應用簽名信息a2a5e708-bfd2-11ed-bfe3-dac502259ad0.png

3.2 調試命令

adb push entry-release-lite-signed.hap /userdataadb shellalias ls='ls --color=never'//解決ls亂碼bm uninstall -n com.ingenic.curtainbm install -p entry-release-lite-signed.hap

4.總結

本文介紹了在OpenHarmony 3.0 LTS系統上重串口功能實現到應用開發的整套流程。簡單的API接口開發,可直接依賴系統模塊。難點主要在輕量級系統開發,讀者可參考開源鴻蒙中輕量級系統服務管理部件中的相關介紹進行開發。

更多熱點文章閱讀
  • 如何使用DevEco Studio創建Native C++應用
  • 基于小凌派RK2206的智能垃圾桶設計
  • 大咖齊聚!OpenHarmony技術峰會豪華嘉賓陣容揭曉
  • ArkUI新能力,助力應用開發更便捷
  • 小白指南:手把手教你用低代碼開發一個應用頁面

提示:本文由電子發燒友論壇發布,轉載請注明來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。


原文標題:OpenHarmony L1(3.0)串口功能開發

文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電子發燒友
    +關注

    關注

    33

    文章

    556

    瀏覽量

    33075
  • 開源社區
    +關注

    關注

    0

    文章

    94

    瀏覽量

    472

原文標題:OpenHarmony L1(3.0)串口功能開發

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【米爾-紫光PG2L100H國產FPGA開發板試用】串口通信功能測試

    使用注意 確保供電穩定 正確設置串口參數 定期檢查連接狀態 做好數據備份 八、后續計劃 近期計劃 開發自定義通信協議 測試中斷接收模式 進行性能測試 九、總結 通過本次串口功能測試,
    發表于 12-06 10:51

    基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標準系統編寫的UI應用類:HelloOpenHarmony。本案例是基于API9接口開發。本案例已在O
    的頭像 發表于 09-15 08:09 ?462次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應用<b class='flag-5'>開發</b>:Hello<b class='flag-5'>Openharmony</b>

    OpenHarmony 明星開發板和應用招募啟動,等你來!

    板能夠量產>1000pcs 報名企業至少有1開發板或者商用設備通過OpenHarmony兼容性測試 報名企業可持續投入南向設備開發的人員大于5 滿足條件的企業可下載報名表
    發表于 09-14 15:21

    MSPM0 L1測量儀表解決方案指南

    電子發燒友網站提供《MSPM0 L1測量儀表解決方案指南.pdf》資料免費下載
    發表于 09-04 10:47 ?1次下載
    MSPM0 <b class='flag-5'>L1</b>測量儀表解決方案指南

    【迅為RK3568開發板】OpenHarmony學習開發系列教程(第1期 北向基礎篇一)

    P1P0_先導課1:30 P2P1_OpenHarmony系統概述8:12 P3P2_OpenHarmony功能框架5:38 P4P3_
    發表于 08-16 15:27

    鴻蒙OpenHarmony南向/北向快速開發教程-迅為RK3568開發

    4.1學習之旅了嗎?快來加入我們,一起探索鴻蒙4.1系統的無限魅力吧! 【北京迅為】OpenHarmony學習開發系列教程(第1期 北向基礎篇一) P0_先導課 P1_OpenHarmony
    發表于 07-23 10:44

    BK1661 全集成的單芯片 L1 頻段 GNSS 解決方案

    LDO ? 內置 DC-DC ? 低功耗: L1 連續跟蹤模式 : 12 mA 休眠待機模式 : 14 μA 外設接口 ? 17 GPIOs ? 3x UART, 其中一個具備下載功能 ? 1x I2C
    發表于 06-03 09:40

    BK1662 單芯片L1/L5雙頻GNSS解決方案

    概 述 BK1662是完全集成的單芯片L1/L5雙頻GNSS解決方案,專為需要低功耗和高性能的應用而設計。 BK1662通過優化多頻段和多模式信號跟蹤、先進的抗多徑技術和抗干擾射頻前端,顯著提高了
    發表于 06-03 09:31

    BK1616P 全集成的單芯片 L1 頻段 GNSS 解決方案(高性價比FLASH版本)

    BK1616P 是全集成的單芯片 L1 頻段 GNSS 解決方案,專為需要低成本、低功耗和高性能的應用而設計。其可以實現優化的多模式信號跟蹤。同時其實現了先進的抗多徑和抗干擾射頻前端,顯著提高了實際
    發表于 05-29 10:50

    鴻蒙OS開發:典型頁面場景【一次開發,多端部署】(功能開發

    應用開發至少包含兩部分工作: UI頁面開發和底層功能開發(部分需要聯網的應用還會涉及服務端開發)。前面章節介紹了如何解決頁面適配的問題,本章節主要介紹應用如何解決設備系統能力差異的兼容
    的頭像 發表于 05-28 17:32 ?637次閱讀
    鴻蒙OS<b class='flag-5'>開發</b>:典型頁面場景【一次<b class='flag-5'>開發</b>,多端部署】(<b class='flag-5'>功能開發</b>)

    OpenHarmony南向開發案例:【智能照相機】

    基于Hi3516開發板,使用OpenHarmony3.0-LTS開發的應用。通過獲取攝像頭數據,實現預覽拍照以及路視頻等功能。并且通過后臺AI服務識別喚醒詞來進行語音控制拍照及錄制視頻
    的頭像 發表于 04-18 22:19 ?476次閱讀
    <b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>開發</b>案例:【智能照相機】

    OpenHarmony南向能力征集令

    1、適配過程中缺少哪些接口能力或者南向能力,需要OpenHarmony去補齊的?例如內核、編譯、器件適配、單板適配等; 2、對標linux,需要OpenHarmony提供哪些能力?比如V4L
    發表于 04-09 15:32

    功能開發板EoRa PI,支持Wi-Fi和低功耗藍牙

    通過對客戶需求的深度調研,億佰特近期推出兩款專為LoRa類模組設計的多功能開發板,內嵌LoRa通信模塊億佰特E22-400/90
    的頭像 發表于 04-05 08:19 ?549次閱讀
    多<b class='flag-5'>功能開發</b>板EoRa PI,支持Wi-Fi和低功耗藍牙

    請問使用ST25R3916方案的NFC讀卡器能否通過EMVCo 3.0 L1認證測試?

    1.目前使用st25r3916方案的讀卡器是否能順利通過EMV3.0 L1測試? 2.有沒有可以通過認證測試的套件并提供技術支持,或者提供樣品定制開發驗證服務? 3.其他型號推薦?
    發表于 03-21 07:08

    OpenHarmony鴻蒙實戰】在RK3399開發板實現智能門禁人臉識別

    基于RK3399開發板,使用OpenHarmony3.0-LTS開發的應用。通過定時獲取攝像頭數據,實現人臉識別比對等功能
    的頭像 發表于 03-20 17:38 ?1526次閱讀
    【<b class='flag-5'>OpenHarmony</b>鴻蒙實戰】在RK3399<b class='flag-5'>開發</b>板實現智能門禁人臉識別
    主站蜘蛛池模板: 大地影院在线播放 | 男的插曲女的下面免费APP | 一道本在线伊人蕉无码 | 国产99热在线观看 | 女人会操出水图 | 厕所RXXX| 久久这里的只有是精品23 | 欧美123区| 亚洲视频网站欧美视频网站 | 国产精品视频大全 | 久久亚洲AV成人无码动态图 | 我和妽妽在厨房里的激情区二区 | 国产产一区二区三区久久毛片国语 | 免费在线观看国产 | 欧美xxxxx九色视频免费观看 | 伊人久久大香线蕉综合bd高清 | 久久综合丁香激情久久 | 办公室的秘密2中文字幕 | 亚洲欧美综合乱码精品成人网 | 日韩高清特级特黄毛片 | 精品亚洲视频在线观看 | 日日操夜夜操狠狠操 | 亚洲精品一区二区在线看片 | 女人一级毛片免费视频观看 | 91麻豆精品一二三区在线 | 99热这里精品 | 岛国大片在线观看完整版 | 性欧美videofree中文字幕 | 99精品免费观看 | 亚洲视频 在线观看 | 嫩草国产精品99国产精品 | 偷柏自拍亚洲综合在线 | 欧美日韩一区在线观看 | 成人毛片一区二区三区 | 国产成人高清精品免费5388密 | 大胸美女洗澡扒奶衣挤奶 | 精品日韩欧美一区二区三区 | va亚洲va天堂va视频在线 | 国产精品手机在线视频 | 超嫩校花被灌醉在线观看 | 免费毛片在线播放 |