移动打印终端终嵌入式系统设计方案阅读目录一项目概述 (2)二系统总体架构 (2)2.1.1 各功能部件作用 (3)2.2.1 手持式扫描仪 (3)2.2.2 嵌入式开发板 (4)2.2.3 微型打印机的选型 (5)2.2.4.远程服务器 (5)三软/硬件设计 (5)3.2 硬件设计 (7)3.2.1 嵌入式开发板和扫描仪的连接 (7)3.2.2嵌入式开发板和远程服务器的连接 (7)3.2.3 嵌入式开发板和微型打印机的连接 (7)四各驱动程序的设计(软件设计) (7)4.1 打印机驱动的设计 (7)4.1.1定义设备号和设备名 (7)4.1.2 设备驱动初始化函数和清除函数 (8)4.编译扫描仪制备驱动 (12)5.加载设备 (12)4.1.3 扫描仪驱动设计 (13)4.1.4 网络通信模块及服务器的开发 (14)4.1.5系统应用程序设计 (15)五系统调试 (16)一 项目概述1.1 系统设计的必要性与PC 终端的比较在信息社会中,打印终端应用非常广泛,比如超市的收银系统、图书管的借还书系统、移动营业厅的话费打印系统等场合,我们都可以看到打印终端的身影。
传统打印终端通常都是由PC 加上一个微型打印机构成,这种架构的打印终端价格比较昂贵,体积庞大,移动笨拙,使用十分不方便。
随着嵌入式技术的发展,许多原来基于PC 的应用都纷纷转向基于嵌入式技术来实现。
基于嵌入式技术的产品具有非常明显的优势,如价格便宜、功耗低、体积小及移动方便等。
具体到打印终端这个产品上来说,可以从下表看出基于PC 的打印终端和基于嵌入式的打印1.2 系统的主要功能本项目实例中拟开发的嵌入式移动打印终端是解决从数据输入、数据处理和数据输出的一体化系统,它提供下列几个功能● 数据录入功能:支持从扫描仪端录入数据; ● 通过网络到数据库查询; ● 数据打印功能二 系统总体架构嵌入式移动终端是一套完整的嵌入式应用系统,包括和硬件和软件两部分,这一节先说一下硬件方面的设计。
2.1 系统硬件组成的部件● 数据输入部件(手持扫描仪)—完成数据输入功能;● 数据处理部件(嵌入式开发板和远程服务器)—完成数据处理任务 ● 数据输出部件(微型打印机)—完成数据打印功能; 各个部件之间的关系如图2.1.1 各功能部件作用○1数据输入部件通常一个系统可以有很多种输入数据的途径,常用的输入设备有键盘鼠标等.在嵌入式移动打印终端中,只采用了扫描仪来完成数据的输入工作,当然系统如果想要实用化,应该再加上键盘等其它输入部件,但在这里就只用为个来设计了.○2数据处理部件数据处理部件是一整个应用系统的核心,它的主要任务是得到扫描仪传来的数据信息,然后连接远程服务器,将数据传送到远程服务器端,完成查询任务后,从远程服务器端得到结果,然后将结果送给微型打印机打印.所以,数据处理部件包括嵌入式开发板和远程服务器两个部分。
嵌入式开发板和远程服务器之间通过网络线相连。
○3数据输出部件在超市收银系统中,收银员最后的一个动作总是打印顾客的单据。
同样,在嵌入式移动打印终端系统中,最后一个动作也是将查询到的结果通过一个微型打印机打印出来。
2.2对硬件的选择2.2.1 手持式扫描仪该扫描仪主要完成的功能其实是条码扫描的任务。
条码扫描是用来扫描条形码的设备,利用光学原理,把条形码的内容解码后通过数据线或者无线的方式传输到电脑或者别的设备中。
根据实际情况,现在拟定了一个关于扫描仪的规格参数:2.2.2 嵌入式开发板嵌入式开发板是本系统的核心部件,它担负着整个系统中心枢纽的重担,同时,它的选型也直接影响到上层操作系统和其它部件的选型。
所以,在选择这个部件时,要站在整个系统的高度来进行。
在设计嵌入式移动打印终端系统时,根据接口类型、所支持的操作系统、性价比这几个要素来选取开发的类型与参数,具体如下表所示:ST2410 开发板相关参数2.2.3 微型打印机的选型微型打印机腹胀荣达科技RD-M系列微型打印机,该款采用独特的面板式嵌入结构,便可将整个打印机固定在仪表面板上,操作简单、方便。
下面是它的一些参数指标●打印方式:针打,针式撞击点阵打印:热敏,热敏加热热点阵打印●打印速度:针打,1.0行/秒,0.7行/秒,0.4行/秒:热敏,35毫米/秒●分辩率:针打,8点/毫米,384点/行。
●打印宽度:针打,16/24/40;热敏,32。
●打印字符:全部448个字符及图块,包括96个ASCII字符,352个希腊文\德文\俄文\法文等字母,日文片假名,部分中文汉字,数字符号,打印字符,块图符;32个用户自定义字符。
国标一二级汉字库中全部汉字和西文字、图符共有817个。
●字符大小:西文,5×7;块图符,6×8点阵;用户自定义字符,汉字,24×24,点阵,16×16●控制板;采用模块化驱动控制电路,有效保护打印头的绝对安全;专门的复位控制电路、电源监测电路以及近乎完美的软硬件看门狗控制的电路,确保打印机不死机、不乱打。
●控制命令:通用ESC/p打印命令。
●打印缓存:32KB。
2.2.4.远程服务器远程服务器用于存在放在型数据库,它通过网络接口接收嵌入式开发板发来的数据,然后进行查询、更新等处理操作,最后把结果再传给嵌入式开发板。
所以,远程服务器必须具备较强的数据存储能力和网络通信能力。
要本系统中我们可以用一台普通PC来完成这个功能。
三软/硬件设计3.1 设计的流程嵌入式移动打印终端系统设计开发可以分为三5个模块:■开发环境的建立■硬件的设计;■扫描仪驱动的设计;■打印机驱动的设计■服务器数据库的设计及通信模块的开发。
设计思想是:从硬件到软件,从底层到上层的方法。
流程图如下3.2 硬件设计由于本开发系统中的核心部件采用已有的开发板,硬件设计的任务就大为简单,其核心任务就转化为通过嵌入式开发板将各个部件连接在一起即可。
3.2.1 嵌入式开发板和扫描仪的连接这一步骤是要把电路设计的图给出的,但是由于现在的设计都是从理论上做而已,没有真实的开发板,所以画不出来电路图。
3.2.2嵌入式开发板和远程服务器的连接这一步骤是要把电路设计的图给出的,但是由于现在的设计都是从理论上做而已,没有真实的开发板,所以画不出来电路图。
3.2.3 嵌入式开发板和微型打印机的连接这一步骤是要把电路设计的图给出的,但是由于现在的设计都是从理论上做而已,没有真实的开发板,所以画不出来电路图。
四各驱动程序的设计(软件设计)4.1 打印机驱动的设计按照编写嵌入式驱动的方法,打印机驱动的编写可分为下列的几个环节:■定义设备号和设备名■实现设备驱动初始化函数和清除函数;■设计所要实现的文件操作,定义file_operation结构,实现所需的底层接口调用函数;■将驱动编译到内核或编译成模块,用insmod命令加载;■生成设备节点文件。
4.1.1定义设备号和设备名4.1.2 设备驱动初始化函数和清除函数其中,在初始化函数weida_printf_init中完成设备注册任务和微型打印机端口初始化任务,具体函数如下:○1ret=register_chrdev(WEIDA_MAJOR,DEVICE_ANME,&weida_print_fops);完成设备注册任务,其中WEIDA_MAJOR为设备号,DEVICE_NAME为设备名,weida_printer_fops 为struct file_oerations结构休变量,其内部每一个成员都是函数指针,指向对应的微型打印机底层接口。
○2初始化GPIO端口Weida_printf_io_init()函数将调用一睦设置GPIO的函数将GPIO初始化:set_gpio_ctrl()函数用于设置GPIO口的相关属性,如set_gpio_ctrl(WEIDA_DA TA_READYIGPIO_PULL_DISIGPIO_MODE_OUT)设置GPIO_D0口的一些属性,其中WEIDA_DA TGA_READY为连接打印机的ready 口的GPIO—D0,GPIO-PULL-DS设置不需要上拉电阻,GPIO—MODE-OUT设置口为输出口,同样可以定义其它几个GPIO口相应属性。
式开发板向微型打印机发送ASCII数据n,其中具体实现代码如下:每次发数据时都要延迟几毫秒,以防向打印机发送数据过快,打印机来不及处理而产生丢失数据现象,所以要设置。
下面具体分析如何编写这些惛层接口操作函数。
(1)weida_printer_open/weida_printer_close;打开/关闭打印机:该函数完成打印操作,在该函数中,首先判断打印机是否在张,是否忙。
是否打印时用函数copy_from_user(kbuf,buffer,count)将数据从用户态到核心态。
○1weida_printer_ioctl通过该函数对打印机的字体、行距等属性进行设置,函数的具体实现代码如下:(2)weida_print_select4.编译扫描仪制备驱动假设上述微型打印机驱动代码存放在weida_printer.c 和weida_printer.h中并且放在5.加载设备编译好驱动模块后,可以通过网络将weida_printer.o文件传输到嵌入式开发板,在嵌入式开发板超级终端环境下执行下列命令将打印机设备运动模块加载内核:Inmsod weida_printer.o生成设备节点:Mknod/dev/weida_printer c23406.打印机驱动测试程序设计通过上面的几个步骤,打印机驱动模块已经注册到内核,在/dev目录下可以打到weida_printer设备,那么编写的设备驱动模块是否正确,能否完成所要求的功能呢?这些必须编写测试程序来进行测试.下面是一个简单的测试程序代码,详细的功能测试代码可以在该程序的基础之上进行扩充.4.1.3 扫描仪驱动设计扫描仪直接接到嵌入式开发板串口上,对它的控制非常简单,只需要将串口1的波特率属性配置成和扫描仪一致,扫描仪扫描后直接可以从串口读出数据,读数据就为扫描仪扫到的条形码.1.编写串口设置函数Set_speed(int fd,int speed)用于设置串口速率,其中fd为打开设备文件,speed为速率,具体的4.1.4 网络通信模块及服务器的开发嵌入式移支打印终端和远程服务器之间采用C/S模式,PC作为服务器,客户端,两者之间通过以太网连接。
远程服务器数据据库采用SQL SEVER ,开发工具使用Microsoft Visual C++6.0;1.建立数据库在远程服务器上要建立3个表。
分别为bookinfo表,borrow表和userifno表。
具体内容在这里就不写了。
2.服务器端通信程序设计数据库建立之后,就可以开始进行服务器端程序的设计了。