前言:因2個(gè)原因?qū)е逻t遲沒有出來想要的效果。原因1:迪文屏的中文字庫問題,對(duì)CFG文件及FLASH的分配不熟,導(dǎo)致icl文件覆蓋了字庫文件,在迪文論壇發(fā)帖解決。原因2:串口線不能2節(jié)連接,我測(cè)試一直2節(jié)杜邦線連接,導(dǎo)致rk2206發(fā)不出數(shù)據(jù),用串口demo測(cè)試,只有一節(jié)杜邦線電腦才能接到數(shù)據(jù),弄了一節(jié)將兩個(gè)板子連接終于可以了。
1
迪文屏方面
1、用dgus軟件設(shè)計(jì)的歡迎使用界面中生成0號(hào)字庫和GBK字庫,如圖1所示,點(diǎn)擊DGUS字庫,出現(xiàn)如圖2所示,生成0號(hào)ASCII字庫。

圖1 dgus字庫生成

圖2 生成0號(hào)字庫
2、下面就來生成GBK漢字庫,如圖3和圖4所示,生成的24宋體24.bin字庫。

圖3 GBK字庫

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

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

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

圖7 導(dǎo)入生成
5、生成背景icl一樣。注意:軟件默認(rèn)背景圖為32.icl,生成CFG文件時(shí)需要修改。這個(gè)根據(jù)屏的flash大小設(shè)置,我的屏只有8M,因此最大為30,32超出了出現(xiàn)了問題。
6、在背景圖上放置一個(gè)圖標(biāo)控件和2個(gè)text控件,如圖8所示,text地址設(shè)置2000,另一個(gè)設(shè)置2064。設(shè)置TEXT的屬性,ASCII選擇0號(hào)字庫,漢字庫選24號(hào)字庫,編碼選擇GBK編碼,后面的X和Y點(diǎn)陣設(shè)置為24點(diǎn)陣。這個(gè)點(diǎn)陣數(shù)根據(jù)自己字庫生成的點(diǎn)陣設(shè)置。使用出廠的字庫,則分別為0號(hào)字庫和12漢字庫。配置為0和12即可。

圖8 放置顯示控件

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

圖10 變量圖標(biāo)顯示設(shè)置
最后生成即可。
2
T5L51方面
1、因我刷過T5L51,所以串口2調(diào)試協(xié)議不通,只能重刷出廠程序或者自己寫程序。我自己寫的程序,在熊家余老師的串口程序基礎(chǔ)上寫自己的接收代碼,main函數(shù)如下代碼:
void main(void){u16 len;s16 ges;u8 text_buf[32]={0};u16 ic_sta;//存儲(chǔ)ICON值sys_init();//系統(tǒng)初始化sys_write_vp(0x2000,FIRST_TXT,sizeof(FIRST_TXT)/2+1);//給第一個(gè)文本顯示控件設(shè)置文本內(nèi)容uart2_init(115200);//初始化串口2while(1){IF(uart2_rx_sta&UART2_PACKET_OK)//接受到了串口數(shù)據(jù)包{len = uart2_rx_sta&UART2_PACKET_LEN;//得到串口數(shù)據(jù)包的長(zhǎng)度,不包含" "或者' '結(jié)束符的長(zhǎng)度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í)把數(shù)據(jù)包顯示到界面上uart2_rx_sta = 0;//清0代表處理掉了此串口包}}}
(左右移動(dòng)查看全部?jī)?nèi)容)
3
小凌派方面
根據(jù)手勢(shì)demo將uart的demo加入到手勢(shì)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.*//* E53模塊中* UART0_RX_M0 -> GPIO0_B6* UART0_TX_M0 -> GPIO0_B7*/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;}elsecrc >>= 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);
(左右移動(dòng)查看全部?jī)?nèi)容)
測(cè)試:測(cè)試的時(shí)候總是控制不了,用小凌派的串口發(fā)給電腦串口,也沒有。不應(yīng)該,人家廠家肯定沒問題。本來2節(jié)杜邦線,改成了1節(jié)杜邦線,可以了。
原文標(biāo)題:如何用小凌派鴻蒙開發(fā)板輕松控制迪文智能屏?
文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
6040瀏覽量
110916 -
迪文屏
+關(guān)注
關(guān)注
3文章
84瀏覽量
5936 -
小凌派
+關(guān)注
關(guān)注
0文章
28瀏覽量
1531
原文標(biāo)題:如何用小凌派鴻蒙開發(fā)板輕松控制迪文智能屏?
文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
開發(fā)板與迪文屏無法進(jìn)行通信該怎么辦呢
【小凌派RK2206開發(fā)板試用體驗(yàn)】小凌派隔空操作迪文COF智能屏
小凌派RK2206加迪文串口屏,體會(huì)OH和手勢(shì)帶來的樂趣
【小凌派RK2206開發(fā)板試用體驗(yàn)】小凌派手勢(shì)應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人
【小凌派RK2206開發(fā)板試用體驗(yàn)】3. 迪文屏事件處理
【小凌派RK2206開發(fā)板試用體驗(yàn)】小凌派手勢(shì)應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人
小凌派手勢(shì)應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人實(shí)例
利用小凌派開發(fā)板自帶的wifi功能來進(jìn)行tcp通信的教程
使用小凌派開發(fā)板wifi進(jìn)行tcp通信的步驟
【創(chuàng)意設(shè)計(jì)】小凌派手勢(shì)應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人
小凌派-RK2206開發(fā)板:UART控制案例
如何用小凌派HarmonyOS開發(fā)板輕松控制迪文智能屏
基于小凌派RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn)
小凌派HarmonyOS開發(fā)板隔空操作迪文COF智能屏
小凌派手勢(shì)應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人

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