当前位置: 编程技术>移动开发
本页文章导读:
▪syszuxpinyin与InputMethodSrc输入法移植到S3C6410手持方案机下 syszuxpinyin与InputMethodSrc输入法移植到S3C6410手持方案机上 syszuxpinyin与InputMethodSrc程序都是开源项目的输入法,前者是拼音输入法,后者是手写输入法,感兴趣的朋友可以自己网上查资料.........
▪ 网络方式:GSM,WCDMA,CDMA2000什么意思 网络模式:GSM,WCDMA,CDMA2000什么意思
这些都是移动电话标准。
全球超过200个国家和地区超过10亿人正在使用GSM电话。GSM标准的无处不在使得在移动电话运营商之间签署"漫游协定"后用户的国际漫.........
▪ MQX3.8源代码分析:GPIO(一) MQX3.8源代码分析:GPIO(1)mqx3.8是飞思卡尔芯片专用的类linux操作系统,这里以kenitis系列ARM cortex M4内核的MK60N512为专属芯片来进行深入解读。
操作GPIO口的代码如下:
GPIO_PIN_STRUCT pins1[] =
.........
[1]syszuxpinyin与InputMethodSrc输入法移植到S3C6410手持方案机下
来源: 互联网 发布时间: 2014-02-18
syszuxpinyin与InputMethodSrc输入法移植到S3C6410手持方案机上
syszuxpinyin与InputMethodSrc程序都是开源项目的输入法,前者是拼音输入法,后者是手写输入法,感兴趣的朋友可以自己网上查资料。
做嵌入式系统应用的朋友对它们应该都不陌生,不管怎么说,任何系统总得有文字互动的吧。我的系统是基于QT4.7.0框架开发的。那么,这两个输入法正好也都是针对QT程序而设计,这样一来就刚好对口了。
首先是拼音输入法的移植。QT4系统服务器上有一个输入法调用的API接口,我们就可以通过该接口实现自定义输入法。syszuxpinyin源码已经实现了基本的按键操作和上层交互的API接口,在这里我们仅需在主程序里面定义和引用syszuxpinyin的类并与QT服务器进行联接。这个过程完成以后,我们就可以试着打开一个编辑窗口,此时QT服务器会接收到一个焦点事件,进而通过API接口调用下层(即我们设计)的输入法。以下是拼音输入法应用截图。觉得怎样呢?好评一个吧,哈哈!
接下来是手写输入法移植,其实手写输入法移植方法同前面差不多,我在此就不多述了,直接的上效果图如下。
朋友们觉得怎样呢,QT4的程序是不是很棒哦!,哈哈!!如果对本人的方案机系统感兴趣可见我另一篇博文。
453722265@qq.com
[2] 网络方式:GSM,WCDMA,CDMA2000什么意思
来源: 互联网 发布时间: 2014-02-18
网络模式:GSM,WCDMA,CDMA2000什么意思
这些都是移动电话标准。 全球超过200个国家和地区超过10亿人正在使用GSM电话。GSM标准的无处不在使得在移动电话运营商之间签署"漫游协定"后用户的国际漫游变得很平常。 GSM 较之它以前的标准最大的不同是他的信令和语音信道都是数字式的,因此GSM被看作是第二代 (2G)移动电话系统。GSM就是全球移动通讯系统(Global System of Mobile communication)。中国移动全球通采用此技术。 WCDMA 是英文Wideband Code Division Multiple Access(宽带码分多址)的英文简称,是一种第三代无线通讯技术。目前中国联通采用的此种3G通讯标准。 CDMA2000(Code Division Multiple Access 2000) 是一个3G移动通讯标准,国际电信联盟ITU的IMT-2000标准认可的无线电接口,也是2G cdmaOne标准的延伸。 CDMA2000与另一个3G标准WCDMA不兼容。目前我国电信采用此标准。
[3] MQX3.8源代码分析:GPIO(一)
来源: 互联网 发布时间: 2014-02-18
MQX3.8源代码分析:GPIO(1)
mqx3.8是飞思卡尔芯片专用的类linux操作系统,这里以kenitis系列ARM cortex M4内核的MK60N512为专属芯片来进行深入解读。
mqx3.8是飞思卡尔芯片专用的类linux操作系统,这里以kenitis系列ARM cortex M4内核的MK60N512为专属芯片来进行深入解读。
操作GPIO口的代码如下:
GPIO_PIN_STRUCT pins1[] = { BSP_LED2, GPIO_LIST_END };
MQX_FILE_PTR port_file1 = NULL;
/* open file containing pin1 set of pins/signals */ if (NULL == (port_file1 = fopen("gpio:write", (char_ptr) &pins1 ))) { printf("Opening file1 GPIO for pins1 failed.\n"); _task_block(); }
/* write logical 1 to all signals in the file (fast) */ if (IO_OK != ioctl(port_file1, GPIO_IOCTL_WRITE_LOG1, NULL )) { printf("Writing to whole file1 failed.\n"); _task_block(); }分析:
pins1数组定义了要使用的io口序号;“gpio:write”表示以gpio口的方式打开该引脚,因为在芯片中,几乎每个引脚都可以进行多路复用,需要明确的指出打开方式;fopen函数以用户指定的方式打开并初始化特定引脚,并且返回文件指针。
关键点就是fopen函数是多个模块打开函数的统一入口,在该函数内部又有多路分支,打开对应的模块,这也是mqx与linux相似的地方。
进一步追踪发现(fio.h):
#define fopen _io_fopen extern MQX_FILE_PTR _io_fopen(const char _PTR_, const char _PTR_);
那么:port_file1 = fopen("gpio:write", (char_ptr) &pins1 );等价于port_file1 = _io_fopen("gpio:write",(char_ptr) &pins1);_io_fopen函数的具体实现位于io_fopen.c中,同理其他相关函数也都在以各自函数名命名的单个文档中。 我们之所以能够轻松的调用函数操作io口,mqx底层肯定做了其他相关准备工作。打开io_gpio.c文档,有函数
如下:
/*FUNCTION*------------------------------- * * Function Name : _io_gpio_install * Returned Value : _mqx_uint a task error code or MQX_OK * Comments : * Install a gpio driver. * *END*----------------------------------*/ _mqx_uint _io_gpio_install ( /* [IN] A string that identifies the device for fopen */ /* input values are those identifiers defined in io_gpio.h file */ char_ptr identifier ) { /* Body */ if (IO_OK == gpio_cpu_init()) return _io_dev_install(identifier, _io_gpio_open, _io_gpio_close, _io_gpio_read, _io_gpio_write, gpio_cpu_ioctl, NULL); return (_mqx_uint)IO_ERROR; } /* Endbody */这就是gpio驱动安装函数,由mqx调用,负责安装open、close、read、write、ioctl函数而我们平常的用到的函数,在内部都是调用的这些函数,这些函数在mqx内核进行了注册。
那什么时候进行gpio驱动的注册呢?打开init_bsp.c文件,在“ uint_32 _bsp_enable_card(void)”函数中
/* Install the GPIO driver */ #if BSPCFG_ENABLE_GPIODEV _io_gpio_install("gpio:"); #endif
这个预处理标志是不是眼熟,他就是user_config.h中定义的宏。这些宏负责在mqx的bsp模块编译时,选择性的加载合适的模块。
当我们把BSPCFG_ENABLE_GPIODEW置为0,GPIO模块便不再陪加载。这样做的好处是,编译内核时,可以去掉不必要的模块,节省空间。
最后把目光定位在了uer_config.h中,该文件可以由用户修改,决定模块注册情况。
最新技术文章: