基于ARM9和Linux的嵌入式打印终端系统
仪数据函数
首先打开设备文件,该系统中使用的串口为串口2,因此打开函数为:
open(“/dev/ttyS1”,O_RDWR|O_NONBLOCK|O_NDELAY);其中,O_RDWR表示可读可写,O_NONBLOCK表示非堵塞模式,O_NDELAY表示没有延迟,立即发出去。
3.2.3 客户端和服务器的socket编写
嵌入式打印终端采用C/S的模式,把PC机作为服务器,开发板作为客户端,通过以太网连接。客户端建立一个socket连接去寻找PC机上的服务程序。PC机上同时也运行一个socket用来listen请求和绑定。采用的是TCP的连接方式。
3.4 主应用程序的设计
开发板上的应用程序Main函数注册两个线程p1和p2,两个全局数组c1和c2。
线程p1将从串口读到的数据放入c1中,然后sent socket直接从c1中取走数据发送给服务器。线程p2负责将received socket数据放入c2数组中,然后直接从c2取走数据交给打印机去打印。
这里对线程使用了两个信号量,并初始化为:sem_init(sem1,0,1); sem_init(sem2,0,0); [4]
两个线程的核心代码如下:
void thread1(void) {
打开串口;设置串口;建立连接;
while(1) {
sem_wait(sem1);
从串口读书据;
用clinetsocket发送出去;
sem_post(sem2);}
}
void thread2(void) {
打开打印机设备;
while(1) {
sem_wait(sem2);
接收数据;扔给打印机;
sem_post(sem1); }
}
如此可以使两个线程得以同步运行,并可以执行多次扫描和打印任务。
本文作者创新点及其经济效益:本系统具有移动性强,功耗低等特点,而且与以往传统的用PC 机实现的打印终端相比,还具有低成本优势。能广泛地应用于超市收银系统,银行自动存取款机,等各种工业领域。笔者试验了一下把802.11g的无线网卡移植到开发板上,并成功实现了和主机的无线通信,使得该系统更加便携。根据对南京各大学校区内超市的研究调查,此系统估计可产生50万元的经济效益。
赵远东导师评论:该同学在书写这篇文章的过程中,参考大量中英文文献资料,通过对ARM开发板的结构、设计等方面的认知,了解Linux驱动的基本框架,设计出了接口板电路实现了移动终端打印功能,有一定的创新思想和经济价值。
参考文献:
[1] SAMSUNG. S3C2410A 200MHz266MHz 32-BIT RISC MICROPROCESSOR USER’S MANUAL [EB/OL]. http://www.samsung.com/, 2004-03. 35,367-408
[2] CORBET J, RUBINI A. LINUX设备驱动程序(第三版)[M]. 中国电力出版社, 2006. 46-74 TP316.81
[3] 孙琼. 嵌入式LINUX应用程序开发详解[M]. 人民邮电出版社, 2006. 184-191 TP316.89
[4] 田家林,陈利学,寇向辉. LINUX嵌入式操作系统在ARM上的移植[J]. 微计算机信息, 2007,4-2:P60-62.
终端 系统 打印 嵌入式 ARM9 Linux 基于 相关文章:
- 基于MSP430的新型自报式水文遥测终端机设计方案(05-23)
- 单片机实现嵌入式因特网终端的设计(05-25)
- 基于DSP的视频采集驱动程序的实现(07-21)
- 基于DSP的安全无线多媒体数字终端(03-03)
- 基于DSP的智能视频监控终端设计与优化研究(09-28)
- μC/OS-II在GPRS终端系统中的应用(04-06)