打印

笔划输入法的C51实现,构思中……

[复制链接]
5261|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cubasa|  楼主 | 2009-12-2 12:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
网上已经有现成的C51的拼音输入法。
拼音输入法比较通用,但不是最好的,而且还有很多的多音字,比如“着”认为是ZHE还是ZHAO,“爪”认为是ZHUA还是ZHAO?如果都放进去无疑会增加代码长度,要知道,我们的多音字有很多的。所以大部分方案都是只放一个。
其实我平时电脑用的是五笔,手机发短信时用的也是笔画,自我感觉比拼音要快,单片机是否可以实现笔划输入法呢?就用12345代替横竖撇捺折,检索字库,字库按照笔划和使用频率来排序。词语联想功能暂时不考虑。
自己先立个方案想想看,如果各位已经实现,有成熟方案,可否拿出来一点分享一下。

相关帖子

来自 2楼
cubasa|  楼主 | 2009-12-3 14:46 | 只看该作者
本帖最后由 cubasa 于 2009-12-3 15:04 编辑

为答谢各位帮助,将我的近期的心血贴上来吧。呵呵,其实也不算心血,只是花点时间去找,五笔码是CSDN网上现成下的数据库,拼音也是用一个汉字转拼音的软件转的,然后整合到一个EXCEL文件中。但应该说是非常有用的。
常用字按拼音排序,有对应的五笔码和拼音,如果你会VBA编程,想要什么样的码表都可以生成。
汉字会重复,因为同一个汉字可以有几种五笔打法。
这张表的缺点是不支持多音字,同一个字只有一个注音。如果哪位大侠可以去掉这个BUG,就再好不过了。
五笔拼音.rar (158.4 KB)
请不要用于商业用途或电子产品中,自己玩玩可以。

使用特权

评论回复
板凳
mohanwei| | 2009-12-2 13:00 | 只看该作者
当然可以。
自己玩玩可以摸索。
想应用的话……据说,目前的手机厂商都要向外国人交输入法专利费

使用特权

评论回复
地板
xwj| | 2009-12-2 13:02 | 只看该作者
只要做个对应的码表即可,但是码表中还是得有每个字的。

对于拼音输入法,多音字相对于所有的字而言多占的空间可以忽略不计的。

使用特权

评论回复
5
huangqi412| | 2009-12-2 13:05 | 只看该作者
晕,这个,可以跟网上的那个拼音一样的流程处理,输入键码后到字库逐个匹配.          就是不知道网上有现成同笔码字库没,不然真是个庞大的体力活。

使用特权

评论回复
6
huangqi412| | 2009-12-2 13:06 | 只看该作者
代码部分很短,就那个字库,,,够大.拼音跟笔画一样,别以为笔画就能省.

使用特权

评论回复
7
宇容创行| | 2009-12-2 13:35 | 只看该作者
算法很简单,库比拼音的大多了

使用特权

评论回复
8
cubasa|  楼主 | 2009-12-2 13:43 | 只看该作者
本帖最后由 cubasa 于 2009-12-2 13:56 编辑

嗯,我也搜到了。前人在十几年前就实现了单片机的五笔输入法了,关键是一张五笔到内码对应表。以前能实现,现在应该也没有问题。
谢谢各位的指点。字库专门用一片大一点的EEPROM,然后把对应表也固化进去,再专门用一片单片机来处理输入法,不知道两种输入法(拼音+五笔)能不能同时塞进去。不扩展的情况下,64K是单片机代码的极限。

使用特权

评论回复
9
cubasa|  楼主 | 2009-12-2 13:44 | 只看该作者
那个小兔在嚼什么?

使用特权

评论回复
10
huangqi412| | 2009-12-2 13:46 | 只看该作者
都说啦,   代码很少,字库N大...

使用特权

评论回复
11
huangqi412| | 2009-12-2 13:46 | 只看该作者
槟榔噻...

使用特权

评论回复
12
cubasa|  楼主 | 2009-12-2 13:54 | 只看该作者
本帖最后由 cubasa 于 2009-12-2 14:02 编辑

http://www.genitop.com/index2.asp?mastercolumn=4&mastercolumnname=汉字答疑
第1.2条:
所有电子产品中凡采用汉字字型数据的必须经信标委授权并支付相应授权费后,才能取得合法使用权。
比如我想自己把DOS下的HZK16.bin烧到EEPROM中并做成产品卖,就要给那个信标委交钱,是不是?
还好,是自己玩玩的。不用去管他。
huangqi412,你说的字库是指点阵字库吗?如果用3500常用汉字,每个汉字16*16的话,还好啦,也就112K。

使用特权

评论回复
13
cubasa|  楼主 | 2009-12-2 14:00 | 只看该作者
汉字内码对应的话,一个汉字占两个字节,算一个汉字对应一个五笔码,一个五笔码最多是四个字符,也就是4+2=6字节,一张表总共3500*6=21K,用个256K的EEPROM应该就差不多够了。

使用特权

评论回复
14
cubasa|  楼主 | 2009-12-2 14:04 | 只看该作者
本帖最后由 cubasa 于 2009-12-2 14:09 编辑

思路越来越清晰了,核心就是找到这张转码表,网上资料有TURBO C的生成转码表的源程序,到后一阶段敲进去看看对不对。如果真不行,就要发扬愚公的精神了。3500个汉字一个个转成五笔码。

使用特权

评论回复
15
cubasa|  楼主 | 2009-12-2 14:25 | 只看该作者
拼音也是同样道理,最长的拼音就六个字符,比如“SHUANG”,做一张转码表,一种拼法对应一系列的汉字内码,根据内码计算出点阵地址,一个个再放到屏上候选就行了。
果然像上面大家说的,输入法算法不难,关键是生成转码表的工作量巨大。

使用特权

评论回复
16
宇容创行| | 2009-12-2 14:40 | 只看该作者
码表不用自己做,网上开源的项目里面有

使用特权

评论回复
17
mohanwei| | 2009-12-2 16:39 | 只看该作者
码表不要直接表示,编码最好用哈希算法转换为固定长度……
打个比方,拼音码总共有200种(只是假设)排列组合方式,那么把他们哈希一下,统一用一个字节(0-255)表示就足够了。
程序中,当你的输入改变后,把字符串哈希一下,得到编码,再从存储器中读出相应的字……

使用特权

评论回复
18
xwj| | 2009-12-2 21:48 | 只看该作者
LZ,编码只要保存一遍的,对应的字符也只要保存一遍(每个汉字2个直接即可)

去我的Blog去看看我以前做的T9拼音吧,五笔、笔画也是一样的,换个码表即可。

使用特权

评论回复
19
cubasa|  楼主 | 2009-12-3 12:14 | 只看该作者
对我来说,用单片机做输入法还是第一次。太感谢各位了,有诸位的帮助,会少走很多的弯路,可以加速自己的项目进度。
mohanwei,你的建议非常有用。
xwj,那个T9拼音貌似找不到,能否在BLOG主页放一下醒目的链接。
这个自己立的项目要暂时挂起了,工作上有个新的项目要接手。但我一定不会停止思考的……

使用特权

评论回复
20
IC_99| | 2009-12-3 12:39 | 只看该作者
又长见识了

使用特权

评论回复
21
ecomputer| | 2009-12-3 13:16 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

947

帖子

3

粉丝