国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

OpenHarmony L1(3.0)串口功能開發

電子發燒友開源社區 ? 來源:未知 ? 2023-03-11 14:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

OpenHarmony 3.0 LTS是面向全場景的開源分布式操作系統,能夠在物聯網上使用??梢灾С秩N系統類型,標準系統、輕量系統和小型系統。本文提供了在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)串口功能開發

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


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

    關注

    34

    文章

    591

    瀏覽量

    34137
  • 開源社區
    +關注

    關注

    1

    文章

    95

    瀏覽量

    798

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    一種L1系列大電流連接器接觸對的設計方案

    介紹某公司開發L1系列端子基于雙曲線網籠結構的改進版本,采用獨特的雙曲線回轉銅柵格結構可提供多重接觸點,從而大幅提高了端子的接觸面積并且使連接器兼具更小的插拔力。此類端子的優點要保留了雙曲線網籠
    的頭像 發表于 02-25 21:50 ?196次閱讀
    一種<b class='flag-5'>L1</b>系列大電流連接器接觸對的設計方案

    #OpenHarmony 開發環境準備

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:44:31

    M4-R1 開源鴻蒙(OpenHarmory)開發板丨串口調試助手實戰案例

    前言開源鴻蒙(OpenHarmony)作為國產分布式操作系統,正在為智能終端與物聯網設備構建統一的開放生態。它以開源共建的方式,為多設備協同與產業創新提供堅實基礎。M4-R1開發板憑借完善的軟硬件
    的頭像 發表于 12-31 11:16 ?8639次閱讀
    M4-R<b class='flag-5'>1</b> 開源鴻蒙(OpenHarmory)<b class='flag-5'>開發</b>板丨<b class='flag-5'>串口</b>調試助手實戰案例

    軍工、航天與電信主時鐘用 OCXO:L1 級時序基準怎么選?

    在很多工程師眼里,“時鐘就是一個晶振 + 若干倍頻芯片”。但當系統來到 雷達、衛星通信、軍工通信、電信主時鐘 這些 L1 級應用時,普通晶振或 TCXO 已經不夠用了——這時通常需要上 OCXO
    發表于 12-01 15:27

    ?TE Connectivity L1/L5微型Splatch GNSS芯片天線技術解析

    TE Connectivity(TE)/Linx Technologies L1/L5 Splatch GNSS芯片天線支持L1/E1/B1
    的頭像 發表于 11-04 11:34 ?665次閱讀
    ?TE Connectivity <b class='flag-5'>L1</b>/<b class='flag-5'>L</b>5微型Splatch GNSS芯片天線技術解析

    【M-K1HSE開發板免費體驗】OpenHarmony系統體驗與調試串口連接

    基本操作還是很流暢的。 調試串口連接調試串口位置對應原理圖如下,上圖DEBUG的右邊為1引腳 接線如下,由于只有2.54的排針,所以2.0接口就tx,rx擠一擠,GND接旁邊的座子的1
    發表于 07-18 23:48

    【RA4L1-SENSOR】+ RA4L1-SENSOR開發版之使用Jlink的RTT打印功能代替串口

    ;); //printf(\"很高興試用RA4L1開發板********\\\\r\\\\n\"); //printf(\"串口輸出打印 波特率115200\\\\r\\\\n\\\\r
    發表于 06-09 09:03

    【RA4L1-SENSOR】+ RA4L1-SENSOR開發串口打印功能printf實現

    很高興收到瑞薩RA生態工作室給與試用的RA4L1-SENSOR開發板,本期就來講解使用RA4L1-SENSOR開發板實現串口打印
    發表于 06-08 15:01

    Sky5? GNSS L1 L5 雙頻低噪聲放大器前端模塊,帶后置濾波器 skyworksinc

    電子發燒友網為你提供()Sky5? GNSS L1 L5 雙頻低噪聲放大器前端模塊,帶后置濾波器相關產品參數、數據手冊,更有Sky5? GNSS L1 L5 雙頻低噪聲放大器前端模塊,
    發表于 05-14 18:32
    Sky5? GNSS <b class='flag-5'>L1</b> <b class='flag-5'>L</b>5 雙頻低噪聲放大器前端模塊,帶后置濾波器 skyworksinc

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制FLASH外設

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板上使用IOT庫的FLASH接口,進行FLASH編程開發。例程將創建一個任務,實現FLASH讀寫操作。例程源代碼:https
    的頭像 發表于 04-22 14:49 ?919次閱讀
    基于小凌派RK2206<b class='flag-5'>開發</b>板:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制FLASH外設

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制UART外設

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板上使用IOT庫的UART接口,進行UART編程開發。例程將創建一個任務,通過配置UART引腳,實現UART讀寫操作。例程源代碼:https
    的頭像 發表于 04-22 14:22 ?1075次閱讀
    基于小凌派RK2206<b class='flag-5'>開發</b>板:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制UART外設

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板上使用IOT庫的GPIO中斷模式,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO引腳為中斷模式,實現GPIO中斷操作。例程源代碼
    的頭像 發表于 04-21 10:39 ?1107次閱讀
    基于小凌派RK2206<b class='flag-5'>開發</b>板:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO中斷

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制GPIO外設

    1、案例簡介本案例主要是如何在小凌派-RK2206開發板上使用IOT庫的GPIO接口,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO引腳,實現GPIO讀寫操作。例程源代碼:https
    的頭像 發表于 04-11 15:36 ?2052次閱讀
    基于小凌派RK2206<b class='flag-5'>開發</b>板:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO外設

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制ADC外設

    1、案例簡介本案例主要講解如何在小凌派-RK2206開發板上使用IoT庫的ADC接口,進行ADC編程開發。例程內容為創建一個任務,讀取按鍵的ADC值,并打印到串口。例程源代碼:http
    的頭像 發表于 04-10 16:00 ?911次閱讀
    基于小凌派RK2206<b class='flag-5'>開發</b>板:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制ADC外設

    迅為iTOP-RK3576人工智能開發板Android?系統接口功能測試

    迅為iTOP-RK3576人工智能開發板Android?系統接口功能測試
    的頭像 發表于 03-28 14:45 ?3804次閱讀
    迅為iTOP-RK3576人工智<b class='flag-5'>能開發</b>板Android?系統接口<b class='flag-5'>功能</b>測試