查看: 3512|回复: 4

[原创] 【LPC54114Bonus任务二】中文输入法

[复制链接]
  • TA的每日心情
    开心
    2018-6-6 08:45
  • 签到天数: 328 天

    连续签到: 1 天

    [LV.8]以坛为家I

    10

    主题

    1047

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    2006
    最后登录
    2019-5-1
    发表于 2017-8-6 17:26:07 | 显示全部楼层 |阅读模式
    本帖最后由 anobodykey 于 2017-8-6 17:26 编辑

    主机环境:Windows 10
    开发环境:MDK 5.23
    SDK版本:SDK_2.2.1_LPC54114J256
    目标板:万利LPC54114
    昨天完成了基础的LPC54114Bonus任务二,今天是在昨天的基础上增加一些东西,由于LPC54114的MAILBOX通信机制只能传递32bit数据,因此对于需要多个数据传输时就不能简单的通过MAILBOX进行值传递,可以开辟一段内存,把内存地址通过MAILBOX进行传递,就可以共享一点内存空间了,这里是在M4内核代码中申请了一段空间,并把内存地址通过MAILBOX传递给M0+内核,M0+内核把从串口收到的数据填充至共享内存中,填充完毕后通过MAILBOX告诉M4内核可以取数据了。今天的例程是实现中文输入法,通过PC端发送拼音到M0+内核,M0+内核把拼音放置在共享内存中,通知M4内核可以进行数据处理了, M4内核根据输入的拼音进行汉字的匹配并让用户选择所需要的汉字,如:通过PC端发送zhong到M0+内核中,M0+内核把数据放置到共享内存中,当用户按下回车键时,M0+内核即告诉M4内核可以进行拼音匹配了,M4内核根据输入的拼音在字库中查找匹配,匹配成功时输出到屏幕上供用户选择,用户在键盘上通过‘-’,’=‘键值进行翻页处理,通过数字1-5进行汉字的选择,此外,该例程需要使用串口终端来显示,而不是串口助手,这里是使用的XShell5来进行交互。
    M0+内核通过MAILBOX中断来获取共享内存地址,如下:
    捕获.PNG
    该段内存可以存储10个字节数据,在主循环中对串口数据进行缓存,如下:
    捕获.PNG
    收到’a‘到’z‘字符进行缓存,收到控制字符即通过MAILBOX通知M4内核可以进行数据处理了。
    M4内核申请10个字节空间并通过MAILBOX告诉M0+内核该共享内存地址,然后监听M0+内核传递过来的数据,如下:
    捕获.PNG
    MAILBOX只是置位标志,具体的处理放在了主循环中,M4内核包含了一个汉字拼音的头文件,截图如下:
    捕获.PNG
    通过uint8_t* ime_get_mb(uint8_t *ctx)接口可以在字库中匹配拼音,当M0+内核把数据准备好时,进行拼音匹配,并输出前5个汉字,如下:
    捕获.PNG
    当用户进行翻页处理时,如下:
    捕获.PNG
    向前翻页跟向后翻页类似,当所需汉字出现时,用户按下1-5键值来选择,如下:
    捕获.PNG
    至此,流程就叙述完毕了,关键是对游标的处理,以便界面美观一些,下载代码至板卡中,启动信息如下:
    捕获.PNG
    此时,用户就可以输入拼音了,如输入en按下回车,
    捕获.PNG
    由于en的匹配不足5个因此翻页操作无效果,此时我们按下1来选择’恩‘汉字,
    捕获.PNG
    接着输入zhi拼音,回车键结束,如下: 捕获.PNG
    此时按下‘-’或‘=’键值来进行翻页处理,找到我们需要的智汉字,如下:
    捕获.PNG
    按下1选择该汉字,最后输入pu拼音,如下:
    捕获.PNG
    至此,本例程就结束了。基于MAILBOX通信的例程大致上也就结束了,可以研究一下更高级的通信方式了。最后放出例程代码,位于driver_examples\mailbox目录下,如下:
    捕获.PNG

    interrupt - task2.rar

    139.35 KB, 下载次数: 4, 下载积分: 威望 1

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-6-6 08:45
  • 签到天数: 328 天

    连续签到: 1 天

    [LV.8]以坛为家I

    10

    主题

    1047

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    2006
    最后登录
    2019-5-1
     楼主| 发表于 2017-8-6 17:26:47 | 显示全部楼层
    自己顶一下
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-6-6 08:45
  • 签到天数: 328 天

    连续签到: 1 天

    [LV.8]以坛为家I

    10

    主题

    1047

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    2006
    最后登录
    2019-5-1
     楼主| 发表于 2017-8-6 17:27:19 | 显示全部楼层
    水一下金币
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-11 11:14
  • 签到天数: 345 天

    连续签到: 1 天

    [LV.8]以坛为家I

    18

    主题

    1317

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    3268
    最后登录
    2023-3-16
    发表于 2017-8-7 08:20:48 | 显示全部楼层
    顶一下,大神!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7880
    最后登录
    2025-4-11
    发表于 2017-8-7 10:53:26 | 显示全部楼层
    中文输入法,6!
    来根华子
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-24 08:15 , Processed in 0.099602 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表