0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于小凌派開發(fā)板的迪文屏控制案例

電子發(fā)燒友開源社區(qū) ? 來源:HarmonyOS官方合作社區(qū) ? 作者:賀婷婷 ? 2022-05-17 09:20 ? 次閱讀

前言:因2個原因?qū)е逻t遲沒有出來想要的效果。原因1:迪文屏的中文字庫問題,對CFG文件及FLASH的分配不熟,導(dǎo)致icl文件覆蓋了字庫文件,在迪文論壇發(fā)帖解決。原因2:串口線不能2節(jié)連接,我測試一直2節(jié)杜邦線連接,導(dǎo)致rk2206發(fā)不出數(shù)據(jù),用串口demo測試,只有一節(jié)杜邦線電腦才能接到數(shù)據(jù),弄了一節(jié)將兩個板子連接終于可以了。

1

迪文屏方面

1、用dgus軟件設(shè)計的歡迎使用界面中生成0號字庫和GBK字庫,如圖1所示,點(diǎn)擊DGUS字庫,出現(xiàn)如圖2所示,生成0號ASCII字庫。

aac735c0-d579-11ec-bce3-dac502259ad0.png

圖1 dgus字庫生成

aadaf902-d579-11ec-bce3-dac502259ad0.png

圖2 生成0號字庫

2、下面就來生成GBK漢字庫,如圖3和圖4所示,生成的24宋體24.bin字庫。

aaf989e4-d579-11ec-bce3-dac502259ad0.png

圖3 GBK字庫

ab0c1636-d579-11ec-bce3-dac502259ad0.png

圖4 生成漢字庫gbk

3、接下來,新建GUI工程,選一張480*854的背景圖,如圖5所示,保存位置確定。

ab2832c6-d579-11ec-bce3-dac502259ad0.png

圖5 新建GUI工程

4、網(wǎng)上找了9張圖標(biāo),其中自己用位圖編輯了一遍,想多大自己設(shè)置即可,用DWIN ICL生成工具生成圖標(biāo)icl,如圖6所示

ab443dae-d579-11ec-bce3-dac502259ad0.png

圖6 生成圖標(biāo)icl

ab622634-d579-11ec-bce3-dac502259ad0.png

圖7 導(dǎo)入生成

5、生成背景icl一樣。注意:軟件默認(rèn)背景圖為32.icl,生成CFG文件時需要修改。這個根據(jù)屏的flash大小設(shè)置,我的屏只有8M,因此最大為30,32超出了出現(xiàn)了問題。

6、在背景圖上放置一個圖標(biāo)控件和2個text控件,如圖8所示,text地址設(shè)置2000,另一個設(shè)置2064。設(shè)置TEXT的屬性,ASCII選擇0號字庫,漢字庫選24號字庫,編碼選擇GBK編碼,后面的X和Y點(diǎn)陣設(shè)置為24點(diǎn)陣。這個點(diǎn)陣數(shù)根據(jù)自己字庫生成的點(diǎn)陣設(shè)置。使用出廠的字庫,則分別為0號字庫和12漢字庫。配置為0和12即可。

ab804d8a-d579-11ec-bce3-dac502259ad0.png

圖8 放置顯示控件

abcea35e-d579-11ec-bce3-dac502259ad0.png

圖9 text設(shè)置屬性

7、設(shè)置變量圖標(biāo)顯示屬性,如圖10所示,從0開始到8共9個變量圖標(biāo)。

abedd1de-d579-11ec-bce3-dac502259ad0.png

圖10 變量圖標(biāo)顯示設(shè)置

最后生成即可。

2

T5L51方面

1、因我刷過T5L51,所以串口2調(diào)試協(xié)議不通,只能重刷出廠程序或者自己寫程序。我自己寫的程序,在熊家余老師的串口程序基礎(chǔ)上寫自己的接收代碼,main函數(shù)如下代碼:

#include "sys.h"#include "uart2.h"#include "string.h"
#define FIRST_TXT  "手勢結(jié)果:" //必須以兩個字節(jié)的0x00或者兩個字節(jié)的0xFF為文本結(jié)束標(biāo)記
void main(void){      u16 len;    s16 ges;    u8 text_buf[32]={0};    u16 ic_sta;//存儲ICON值    sys_init();//系統(tǒng)初始化        sys_write_vp(0x2000,FIRST_TXT,sizeof(FIRST_TXT)/2+1);//給第一個文本顯示控件設(shè)置文本內(nèi)容        uart2_init(115200);//初始化串口2        while(1)    {          IF(uart2_rx_sta&UART2_PACKET_OK)//接受到了串口數(shù)據(jù)包        {            len = uart2_rx_sta&UART2_PACKET_LEN;//得到串口數(shù)據(jù)包的長度,不包含"
"或者'
'結(jié)束符的長度                        ges = uart2_buf[0]+uart2_buf[1]*256;            switch(ges)            {                case 1:                    ic_sta = 0;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_UP:0x%x",ges);                break;                case 2:                    ic_sta = 1;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_DOWN:0x%x",ges);                break;                case 4:                    ic_sta = 2;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                    sprintf(text_buf,"GES_LEFT:0x%x",ges);                break;                case 8:                    ic_sta = 3;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_RIGHT:0x%x",ges);                break;                case 16:                    ic_sta = 4;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_FORWARD:0x%x",ges);                break;                case 32:                    ic_sta = 5;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_BACKWARD:0x%x",ges);                break;                case 64:                    ic_sta = 6;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_clockWISE:0x%x",ges);                break;                case 128:                    ic_sta = 7;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_COUNT_CLOCKWISE:0x%x",ges);                break;                case 256:                    ic_sta = 8;                    sys_write_vp(0x1000,(u8*)&ic_sta,1);                 sprintf(text_buf,"GES_WAVE:0x%x",ges);                break;                default:                                        break;            }            len = strlen(text_buf);            text_buf[len++] = 0;            text_buf[len++] = 0;            sys_write_vp(0x2064,text_buf,len/2+1);//同時把數(shù)據(jù)包顯示到界面上                        uart2_rx_sta = 0;//清0代表處理掉了此串口包        }    }}

(左右移動查看全部內(nèi)容)

3

小凌派方面

根據(jù)手勢demo將uart的demo加入到手勢demo.rar中,如下所示

/** Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**   http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/#include #include "los_task.h"#include "ohos_init.h"#include "lz_hardware.h"#include "e53_gesture_sensor.h"
/* E53模塊中* UART0_RX_M0 -> GPIO0_B6* UART0_TX_M0 -> GPIO0_B7*/#define UART_ID         0
unsigned short getCRC16(unsigned char *ptr,unsigned char len){        unsigned char i;        unsigned short crc = 0xFFFF;                if(ptr==0)        {                return 0;        }        if(len==0)        {            len = 1;        }        //if(len<=255)        {                while(len--)                {                        crc ^= *ptr;                        for(i=0; i<8; i++)                        {                            if(crc&1)                            {                                crc >>= 1;                                crc ^= 0xA001;                            }                            else                                crc >>= 1;                        }                        ptr++;                }        }        return(crc);}void uart0_init(void){  unsigned int ret;  UartAttribute attr;    LzUartDeinit(UART_ID);    attr.baudRate = 115200;  attr.dataBits = UART_DATA_BIT_8;  attr.pad = FLOW_CTRL_NONE;  attr.parity = UART_PARITY_NONE;  attr.rxBlock = UART_BLOCK_STATE_NONE_BLOCK;  attr.stopBits = UART_STOP_BIT_1;  attr.txBlock = UART_BLOCK_STATE_NONE_BLOCK;    PinctrlSet(GPIO0_PB6, MUX_FUNC2, PULL_KEEP, DRIVE_LEVEL2);  PinctrlSet(GPIO0_PB7, MUX_FUNC2, PULL_KEEP, DRIVE_LEVEL2);    ret = LzUartInit(UART_ID, &attr);  if (ret != LZ_HARDWARE_SUCCESS)  {    printf("%s, %d: LzUartInit(%d) faiLED!
", __FILE__, __LINE__, ret);    return;  }    return;}void e53_gs_process(void *arg){  unsigned int ret = 0;        unsigned int i=0;  unsigned short flag = 0;        unsigned short rc = 0;  unsigned char tubiao[16] = {0};        unsigned char tubiao_str[48] = {0};    e53_gs_init();  uart0_init();          ret = LzUartWrite(UART_ID, tubiao, 4);  if (ret != LZ_HARDWARE_SUCCESS)  {    printf("%s, %d: LzUartInit(%d) failed!
", __FILE__, __LINE__, ret);    return;  }    while (1)  {    ret = e53_gs_get_gesture_state(&flag);    if (ret != 0)    {      printf("Get Gesture Statu: 0x%x
", flag);      if (flag & GES_UP)      {        printf("	Up
");      }      if (flag & GES_DOWM)      {        printf("	Down
");      }      if (flag & GES_LEFT)      {        printf("	Left
");      }      if (flag & GES_RIGHT)      {        printf("	Right
");      }      if (flag & GES_FORWARD)      {        printf("	Forward
");      }      if (flag & GES_BACKWARD)      {        printf("	Backward
");      }      if (flag & GES_CLOCKWISE)      {        printf("	Clockwise
");      }      if (flag & GES_COUNT_CLOCKWISE)      {        printf("	Count Clockwise
");      }      if (flag & GES_WAVE)      {        printf("	Wave
");      }            e53_gs_led_up_set((flag & GES_UP) ? (1) : (0));      e53_gs_led_down_set((flag & GES_DOWM) ? (1) : (0));      e53_gs_led_left_set((flag & GES_LEFT) ? (1) : (0));      e53_gs_led_right_set((flag & GES_RIGHT) ? (1) : (0));      e53_gs_led_forward_set((flag & GES_FORWARD) ? (1) : (0));      e53_gs_led_backward_set((flag & GES_BACKWARD) ? (1) : (0));      e53_gs_led_cw_set((flag & GES_CLOCKWISE) ? (1) : (0));      e53_gs_led_ccw_set((flag & GES_COUNT_CLOCKWISE) ? (1) : (0));      e53_gs_led_wave_set((flag & GES_WAVE) ? (1) : (0));            tubiao[0] = flag;      tubiao[1] = (flag&0xff00)>>8;      tubiao[2] = '
';      tubiao[3] = '
';                        printf("tubiao:
");                        for(i=0;i<4;i++) {                            sprintf(tubiao_str+i*3, "%02X ", tubiao[i] & 0xFF);                        }                        printf("DOWN HEX: %s", tubiao_str);                        printf("
");      ret = LzUartWrite(UART_ID, tubiao, 4);      if (ret != LZ_HARDWARE_SUCCESS)      {        printf("%s, %d: LzUartInit(%d) failed!
", __FILE__, __LINE__, ret);        return;      }    }    else    {      /* 如果沒有數(shù)據(jù),則多等待 */      LOS_Msleep(100);    }  }}
void e53_gs_example(){  unsigned int thread_id;  TSK_INIT_PARAM_S task = {0};  unsigned int ret = LOS_OK;
  task.pfnTaskEntry = (TSK_ENTRY_FUNC)e53_gs_process;  task.uwStackSize = 2048;  task.pcName = "e53 getsture sensor process";  task.usTaskPrio = 24;  ret = LOS_TaskCreate(&thread_id, &task);  if (ret != LOS_OK)  {    printf("Falied to create Task_One ret:0x%x
", ret);    return;  }}
APP_FEATURE_INIT(e53_gs_example);

(左右移動查看全部內(nèi)容)

測試:測試的時候總是控制不了,用小凌派的串口發(fā)給電腦串口,也沒有。不應(yīng)該,人家廠家肯定沒問題。本來2節(jié)杜邦線,改成了1節(jié)杜邦線,可以了。

原文標(biāo)題:如何用小凌派鴻蒙開發(fā)板輕松控制迪文智能屏?

文章出處:【微信公眾號:HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4771

    瀏覽量

    96154
  • 迪文屏
    +關(guān)注

    關(guān)注

    3

    文章

    71

    瀏覽量

    5252
  • 小凌派
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    1176

原文標(biāo)題:如何用小凌派鴻蒙開發(fā)板輕松控制迪文智能屏?

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    開發(fā)板無法進(jìn)行通信該怎么辦呢

    開發(fā)板無法進(jìn)行通信該怎么辦呢?如何對其進(jìn)行調(diào)試?
    發(fā)表于 12-09 07:05

    【小RK2206開發(fā)板試用體驗(yàn)】小隔空操作COF智能

    ,于是自然的就想著兩者怎么結(jié)合使用。最終達(dá)到了視頻中所呈現(xiàn)的效果,通過小RK2206開發(fā)板感應(yīng)手勢,通過串口給COF智能
    發(fā)表于 05-06 13:57

    RK2206加串口,體會OH和手勢帶來的樂趣

    大概18年前開始使用液晶模組,但確實(shí)沒想過在開源鴻蒙里實(shí)現(xiàn)!小RK2206加串口
    發(fā)表于 05-07 23:39

    【小RK2206開發(fā)板試用體驗(yàn)】小手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人

    在上一篇文章中,我分享了 小隔空操作COF智能 ,這次再給大家分享一個更有趣的智能手勢應(yīng)用----小
    發(fā)表于 05-11 12:52

    【小RK2206開發(fā)板試用體驗(yàn)】3. 事件處理

    一、前言使用小進(jìn)行通信,有一些特殊的命令,為了方便識別及處理,我設(shè)計了
    發(fā)表于 05-17 12:38

    【小RK2206開發(fā)板試用體驗(yàn)】小手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人

    在上一篇文章中,我分享了 小隔空操作COF智能 ,這次再給大家分享一個更有趣的智能手勢應(yīng)用----小
    發(fā)表于 05-24 10:56

    手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人實(shí)例

    在上一篇文章中,分享了 小隔空操作COF智能 ,這次再給大家分享一個更有趣的智能手勢應(yīng)用----小
    的頭像 發(fā)表于 05-12 10:30 ?2221次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>手勢應(yīng)用之原力<b class='flag-5'>控制</b>星球大戰(zhàn)BB-8機(jī)器人實(shí)例

    利用小開發(fā)板自帶的wifi功能來進(jìn)行tcp通信的教程

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn) 在開發(fā)過程中想要與開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)
    的頭像 發(fā)表于 05-13 15:05 ?2529次閱讀
    利用小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>自帶的wifi功能來進(jìn)行tcp通信的教程

    使用小開發(fā)板wifi進(jìn)行tcp通信的步驟

    開發(fā)過程中想要與開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)開發(fā)板使用串口與pc通信還需要專門的串口轉(zhuǎn)換工具才行,而小
    的頭像 發(fā)表于 05-16 09:35 ?2106次閱讀

    【創(chuàng)意設(shè)計】小手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人

    在上一篇文章中,我分享了小隔空操作COF智能,這次再給大家分享一個更有趣的智能手勢應(yīng)用----小
    的頭像 發(fā)表于 05-24 09:24 ?667次閱讀
    【創(chuàng)意設(shè)計】小<b class='flag-5'>凌</b><b class='flag-5'>派</b>手勢應(yīng)用之原力<b class='flag-5'>控制</b>星球大戰(zhàn)BB-8機(jī)器人

    -RK2206開發(fā)板:UART控制案例

    -RK2206開發(fā)板:UART控制案例一、簡介通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART。它將要傳
    的頭像 發(fā)表于 06-14 11:12 ?845次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>-RK2206<b class='flag-5'>開發(fā)板</b>:UART<b class='flag-5'>控制</b>案例

    如何用小HarmonyOS開發(fā)板輕松控制智能

    前言:因2個原因?qū)е逻t遲沒有出來想要的效果。原因1:的中文字庫問題,對CFG文件及FLASH的分配不熟,導(dǎo)致icl文件覆蓋了字庫文件,在文論壇發(fā)帖解決。原因2:串口線不能2節(jié)連
    的頭像 發(fā)表于 06-14 11:11 ?1021次閱讀
    如何用小<b class='flag-5'>凌</b><b class='flag-5'>派</b>HarmonyOS<b class='flag-5'>開發(fā)板</b>輕松<b class='flag-5'>控制</b><b class='flag-5'>迪</b><b class='flag-5'>文</b>智能<b class='flag-5'>屏</b>

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn)

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn)在開發(fā)過程中想要與開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)
    的頭像 發(fā)表于 06-14 11:10 ?1071次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>wifi-tcp通信實(shí)驗(yàn)

    HarmonyOS開發(fā)板隔空操作COF智能

    這次有幸獲得小RK2206鴻蒙開發(fā)板試用,選擇的模塊是手勢,通過官方例程,進(jìn)行了基礎(chǔ)的測試,非常順利。之后就想結(jié)合其他東西,多玩一玩。剛好之前有
    的頭像 發(fā)表于 06-14 11:09 ?864次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>HarmonyOS<b class='flag-5'>開發(fā)板</b>隔空操作<b class='flag-5'>迪</b><b class='flag-5'>文</b>COF智能<b class='flag-5'>屏</b>

    手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人

    在上一篇文章中,分享了小隔空操作COF智能,這次再給大家分享一個更有趣的智能手勢應(yīng)用----小
    的頭像 發(fā)表于 06-14 11:07 ?647次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>手勢應(yīng)用之原力<b class='flag-5'>控制</b>星球大戰(zhàn)BB-8機(jī)器人