【正點原子STM32連載】第五十九章 T9拼音輸入法實驗(Julia分形)實驗 摘自【正點原子】APM32F407最小系統板使用指南

1)實驗平臺:正點原子APM32F407最小系統板
2)平臺購買地址:https://detail.tmall.com/item.htm?id=609294757420
3)全套實驗源碼+手冊+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html##

第五十九章 T9拼音輸入法實驗

本章將介紹正點原子提供的T9拼音輸入法庫的使用,用其實現一個簡單的T9拼音輸入法應用。通過本章的學習,讀者將學習到正點原子T9拼音輸入法庫的使用。
本章分為如下幾個小節:
59.1 硬件設計
59.2 程序設計
59.3 下載驗證

59.1 硬件設計
59.1.1 例程功能

  1. 程序運行后,在LCD上顯示T9拼音輸入法的鍵盤及相關信息
  2. 觸摸鍵盤上的按鍵,可進行拼音輸入
  3. 按下KEY0按鍵或KEY_UP按鍵,可分別進行匹配結果翻頁或清除輸入的操作
  4. 可使用USMART對輸入法進行調試
  5. LED0閃爍,指示程序正在運行
    59.1.2 硬件資源
  6. LED
    LED0 - PF9
  7. 按鍵
    KEY0 - PE4
    KEY_UP - PA0
  8. 正點原子 2.8/3.5/4.3/7/10寸TFTLCD模塊(僅限MCU屏,16位8080并口驅動)
  9. TFTLCD模塊上的觸摸屏(電阻式、電容式)
  10. SD卡(SDIO驅動)
  11. NOR Flash(SPI驅動)
    59.1.3 原理圖
    本章實驗使用的T9拼音輸入法庫為軟件庫,因此沒有對應的連接原理圖。
    59.2 程序設計
    59.2.1 T9拼音輸入法庫的使用
    正點原子提供的T9拼音輸入法庫包含三個文件,分別為:pyinput.c、pyinput.h和pymb .h,本章實驗配套的實驗例程中已經提供了這三個文件,并且針對正點原子APM32F407最小系統板進行了移植適配,在使用時,僅需將這三個文件添加到自己的工程即可,如下圖所示:
    在這里插入圖片描述

圖59.2.1.1 正點原子T9拼音輸入法庫文件
T9拼音輸入法庫提供了匹配碼表的函數,使用非常方便。
匹配碼表函數的使用示例,如下所示:

#include "apm32f4xx.h"
#include "./T9INPUT/pyinput.h"void example_fun(void)
{uint8_t inputstr[5];uint8_t res;uint8_t index;/* 拼音輸入 */// inputstr[0] = 9; // wxyz// inputstr[1] = 4; // ghi// inputstr[2] = 3; // def// inputstr[3] = 6; // mno// inputstr[4] = 4; // ghi/* 匹配碼表 */res = t9.getpymb(inputstr);/* 有匹配結果 */if (res != 0){/* 展示所有匹配結果 */for (index=0; index<(res&0x7F); index++){// printf("拼音: %s\r\n", t9.pymb[index]->py);// printf("結果: %s\r\n", t9.pymb[index]->pymb);}}/* 無匹配結果 */else{/* Do something */}
}

59.2.2 實驗應用代碼
本章實驗的應用代碼,如下所示:

int main(void)
{/* 僅保留關鍵代碼,其余代碼省略 */RESTART:while (1){/* 獲取觸摸點對應的鍵值 */pykey = py_get_keynum(30, 195);/* 有有效鍵值 */if (pykey != 0){/* 退格鍵 */if (pykey == 1){if (inputlen != 0){inputlen--;}inputstr[inputlen] = '\0';}/* 其他有效鍵值 */else{inputstr[inputlen] = pykey + '0';if (inputlen < 7){inputlen++;}}/* 有輸入 */if (inputstr[0] != '\0'){/* 匹配碼表 */pykey = t9.getpymb(inputstr);/* 有匹配結果 */if (pykey != 0){result_num = pykey & 0x7F;cur_index = 1;}/* 無匹配結果 */else{inputlen--;inputstr[inputlen] = '\0';}}/* 無輸入 */else{cur_index = 0;result_num = 0;}/* 顯示輸入和匹配結果 */lcd_fill(30 + 40, 105, 30 + 40 + 48, 110 + 16, WHITE);lcd_show_num(30 + 144, 105, result_num, 1, 16, BLUE);text_show_string(30 + 40, 105, 200, 16, (char *)inputstr,16,0,BLUE);py_show_result(cur_index);}/* 有匹配結果 */if (result_num != 0){key = key_scan(0);switch (key){/* 匹配翻頁 */case KEY0_PRES:{if (cur_index < result_num){cur_index++;}else{cur_index = 1;}py_show_result(cur_index);break;}/* 清除 */case WKUP_PRES:{lcd_fill(30 + 40, 145, lcddev.width - 1, 145 + 48, WHITE);goto RESTART;}}}}
}

由于本實驗的應用代碼過于冗長,因此上面代碼僅保留了部分關鍵代碼,完成代碼請讀者自行查看本實驗的配套實驗例程。從上面的代碼中可以看出,本實驗實驗的應用中,通過觸摸屏獲取拼音的鍵值,然后調用函數t9. getpymb()進行碼表匹配,有匹配結果時,則在LCD上顯示匹配結果,若有多個匹配結果,則可通過KEY0按鍵進行翻頁,通過也可通過KEY_UP按鍵清除輸入。
59.3 下載驗證
在完成編譯和燒錄操作后,可以看到LCD上顯示了本實驗的相關實驗信息,通過也顯示了T9拼音的輸入鍵盤,此時便可通過鍵盤輸入拼音,隨即便可在LCD上看到輸入拼音對應的漢字匹配結果,若有多個匹配結果,例如輸入“64”,則會匹配到拼音“mi”和“ni”,此時按下KEY0按鍵,可對多個匹配結果進行翻頁,若按下KEY_UP按鍵則會清除所有輸入。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167114.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于 token 和證書

關于 token 和證書 在網絡檢測中&#xff0c;Token通常是指一種特殊的令牌&#xff0c;用于在分布式系統中進行資源控制和訪問管理。Token可以用于驗證客戶端的身份、限制客戶端的訪問權限以及控制客戶端對某些資源的使用。 在網絡檢測中&#xff0c;Token通常用于以下幾個方…

uniapp IOS從打包到上架流程(詳細簡單) 原創

? 1.登入蘋果開發者網站&#xff0c;打開App Store Connect ? 2.新App的創建 點擊我的App可以進入App管理界面&#xff0c;在右上角點擊?新建App 即可創建新的App&#xff0c;如下圖&#xff1a; ? 3.app基本信息填寫 新建完App后&#xff0c;需要填寫App的基本信息&…

SOLIDWORKS 2024新功能之CAM篇

SOLIDWORKS 2024 新功能 CAM篇目錄概述 ? 附加探測周期參數 ? 反轉切割的固定循環螺紋加工 ? 包含裝配體的零件的正確進給/速度數據 ? Heidenhain 探測類型 ? 2.5 軸特征向導中島嶼的終止條件 ? 鏈接輪廓銑削操作的切入引導和切出引導參數 ? 螺紋銑削操作的最小孔…

網絡工程師眼中的網站安全:應對攻擊的綜合措施

作為一名專業的網絡工程師&#xff0c;我們深知網站面臨各種攻擊威脅的現實。在構建網站安全的同時&#xff0c;綜合運用技術手段和管理策略是至關重要的。在這篇文章中&#xff0c;我們將從網絡工程師的視角出發&#xff0c;介紹如何解決網站被攻擊的問題&#xff0c;并在其中…

飛凌嵌入式受邀參加「2023年電子工程師大會」并做主旨演講

11月23日&#xff0c;華秋電子發燒友在深圳總部舉辦了「2023年電子工程師大會暨第三屆社區年度頒獎」活動&#xff0c;邀請到了高校教授、企業創始人及高管、行業技術專家、電子工程師等眾多嘉賓到場&#xff0c;呈現并傳播了電子產業動態、最新技術、應用案例及開源硬件項目。…

C#FlaUI.UIA實現發送微信消息原理

一 準備 .NetFramework 4.8 FlaUI.UIA3 4.0.0 FlaUInspect V1.3.0 1下載FlaUInspect https://github.com/FlaUI/FlaUInspect FlaUInspect V1.3.0 百度網盤下載 2 NuGet 引用 flaUI.UIA3 4.0.0 二代碼部分 1 引用FlaUI using FlaUI.Core; using FlaUI.Core.Automatio…

安防系統智能視頻監控中出現畫面異常該如何自檢?

大家都知道&#xff0c;在當今社會&#xff0c;攝像頭無處不在&#xff0c;除了常見的生活與工作場景中&#xff0c;在一些無法人員無法長期駐點場景&#xff0c;如野生動物監測、高空作業監控、高壓電纜監控等場景&#xff0c;在這些地方安裝攝像頭就是為方便日常監控。但是由…

Odoo:行業領先的免費開源生產制造管理系統

產品生命周期管理 用 Odoo 產品數據管理解決方案加速產品開發 研究、開發和設計新產品或者重新設計現有產品是所有制造企業的活力之源&#xff0c;但很多企業的設計部門和工程部門卻完全脫離 ERP 系統。這導致工程師需要耗費大量時間來回答企業中其他部門就產品狀態、修改級別…

遞歸和動態規劃的區別

時間復雜度方面&#xff1a; 遞歸會導致指數級別的時間復雜度&#xff0c;因為它會計算許多重復的子問題。 動態規劃會存儲子問題的結果&#xff0c;來降低復雜度&#xff0c;使其變成多項式級別。 自頂向下VS自底向上 遞歸采用自頂向下的方式&#xff0c;從原問題出發&#xf…

Course1-Week2-多輸入變量的回歸問題

Course1-Week2-多輸入變量的回歸問題 文章目錄 Course1-Week2-多輸入變量的回歸問題1. 向量化和多元線性回歸1.1 多維特征1.2 向量化1.3 用于多元線性回歸的梯度下降法 2. 使梯度下降法更快收斂的技巧2.1 特征縮放2.2 判斷梯度下降是否收斂2.3 如何設置學習率 3. 特征工程3.1 選…

看圖說話:對臟讀、不可重復度、幻讀進行總結

1、臟讀 「事務B」將 id 為 1 的用戶 name 修改為“小卡”&#xff0c;事務未提交。「事務A」查詢 id 為 1 的用戶數據&#xff0c;此時 name 已為“小卡”。 2、不可重復度 「事務A」第一次讀取 id 為 1 的用戶&#xff0c;name 是 “卡卡”。「事務B」將 id 為 1 的用戶 nam…

Sectigo

隨著互聯網的普及和技術的飛速發展&#xff0c;網絡安全問題引起重視。這時&#xff0c;有一家名為Sectigo(原Comodo CA)的公司應運而生&#xff0c;致力于為企業和個人提供最先進、最可靠的網絡安全解決方案。 Sectigo(原Comodo CA) 成立于2008年&#xff0c;總部位于美國加利…

數據分析策略

文章目錄 我想對比不同完整度40%&#xff0c;50%&#xff0c;60%抽樣計算來10min的TI序列&#xff0c;它們的差異與完整率的關系&#xff0c;告訴我怎么對比即可 了解您的分析目標后&#xff0c;我可以提供一個比較不同完整度&#xff08;40%&#xff0c;50%&#xff0c;60%&am…

啟發式算法

什么是啟發式算法&#xff1f;他們都有什么特點&#xff1f; 啟發式算法是一類用于在大規模問題上尋找近似解的搜索算法。這些算法不保證找到全局最優解&#xff0c;但通常能夠在合理的時間內找到一個較好的解決方案。啟發式算法常用于解決組合優化問題&#xff0c;其中目標是…

《使用Python將Excel數據批量寫入MongoDB數據庫》

在數據分析及處理過程中&#xff0c;我們經常需要將數據寫入數據庫。而MongoDB作為一種NoSQL數據庫&#xff0c;其具有強大的可擴展性、高性能以及支持復雜查詢等特性&#xff0c;廣泛用于大規模數據存儲和分析。在這篇文章中&#xff0c;我們將使用Python編寫一個將Excel數據批…

dos 命令移到文件夾

SET GenFolder C:\Users\administered\Desktop\t2\old_file set path1C:\Users\administered\Desktop\t1\crontab_master set path2C:\Users\administered\Desktop\t2\old_file if not exist %GenFolder% ( echo %GenFolder%目錄不存在&#xff0c;已創建該目錄&#x…

Linux python安裝 虛擬環境 virtualenv,以及 git clone的 文件數據, 以及 下資源配置

根目錄創建 venvs 文件夾 sudo mkdir /venvs 進入 /venvs 目錄 cd /venvsp 創建虛擬環境&#xff0c;前提要按照 python3 安裝 的 命令 sudo apt install python3 sudo python3 -m venv 虛擬環境名 激活虛擬環境 source /venvs/zen-venv/bin/activate 安裝flask pip install fl…

探究Kafka原理-2.Kafka基本命令實操

&#x1f44f;作者簡介&#xff1a;大家好&#xff0c;我是愛吃芝士的土豆倪&#xff0c;24屆校招生Java選手&#xff0c;很高興認識大家&#x1f4d5;系列專欄&#xff1a;Spring源碼、JUC源碼、Kafka原理&#x1f525;如果感覺博主的文章還不錯的話&#xff0c;請&#x1f44…

搭建Angular并引入NG-ZORRO組件庫

作者&#xff1a;baekpcyyy&#x1f41f; 1.安裝node.js 注&#xff1a;安裝 16.0 或更高版本的 Node.js node官網&#xff1a;https://nodejs.org/en 2.進入angular官網 https://angular.cn/guide/setup-local 新建一個文件夾 vsc打開 打開終端 1.首先安裝angular手腳架…

怎么去掉視頻水印?分享三種視頻去水印技巧,輕松搞定!

怎么去掉視頻水印&#xff1f;在分享視頻時&#xff0c;我們常常會遇到因為水印而影響觀感的問題&#xff0c;因此&#xff0c;掌握有效的去水印方法顯得尤為重要&#xff0c;隨著技術的進步&#xff0c;現在有多種方法可以幫助我們去除視頻中的水印。 接下來分享三種簡單且有效…