金融税控收款机

2024-05-29

金融税控收款机(精选三篇)

金融税控收款机 篇1

关键词:金融税控收款机,Linux,打印模块,设备驱动

1 引言

随着“金税工程”的推广实施,金融税控收款机的市场容量将越来越大。金融税控收款机的打印模块完成打印交易商品和内容的明细收据、凭条以及发票等的功能,特别对发票的数据完成性和一致性要求较高,因此打印模块对金融税控收款机的品质影响比较大。本文提出了基于Linux的模块化的打印机驱动设计方案,这种方案很适用于嵌入式金融税控收款机的打印模块。

2 Linux设备驱动程序分析

L i n u x是一种具有很好的实时性,很强的稳定性、嵌入性的操作系统。与其他操作系统相比,Linux有其自身的一些特点:多任务、多用户、多平台、使用分页技术的虚拟内存,用户可根据需要自己定制自己的操作系统,从而使得系统能够很好的满足用户的要求。

设备驱动程序在L i n u x内核中占有极其重要的位置,它是内核用于完成对实际物理设备进行控制操作的功能模块。在Linux操作系统中,设备驱动程序为应用程序屏蔽了硬件的细节,给应用程序提供一个统一的编程接口,所有硬件设备被看成设备文件,应用程序可以通过像操纵普通文件一样对硬件设备进行操作,即只需要进行文件的打开、读写和关闭等操作,就可以控制硬件设备。

Linux系统下的设备分为字符设备、块设备和网络设备三种[1]。字符设备指那些没有缓冲区,以字符流形式发送和接受的设备,打印机就是一种典型的字符型设备。

3 打印机驱动设计

打印机驱动程序由三个独立的模块组成:机芯驱动、字符点阵解析驱动和打印API。打印API提供与具体硬件平台无关的应用程序接口,其主要功能是对下层设备驱动程序进行封装。字符点阵解析驱动功能是根据打印A P I输入的字符,从字库中获取该字符的点阵,并根据设置的打印字体进行相应的点阵变换。机芯驱动接收字符点阵解析驱动输出的点阵信息和打印A P I输出的控制信息,控制打印机芯完成打印操作。打印机驱动程序和应用程序、内核关系如图1所示。

模块化的打印机驱动的优点如下:1、打印A P I屏蔽了今后打印机驱动升级对应用程序造成的影响。2、独立的字符点阵解析驱动不仅可以提供给打印模块使用,还可以提供给其他需要使用字符点阵信息的模块使用(如显示模块),这样可以减少程序中重复使用的代码段。3、如果要增加新的字符点阵类型、新字体或用户自定义字符点阵,只要升级字符点阵解析驱动即可。4、可以根据不同微型打印机芯,配置不同机芯驱动,从而实现一套打印机驱动支持多款打印机芯的功能。5、当程序需要添加新的功能或修改某功能时,我们要作的仅仅是写出一个新的模块或对某一模块进行修改,而无需对整个驱动程序进行大手术。模块化的设计使打印机驱动具有良好的接口环境,较好的灵活性和很强的扩展性。

3.1 机芯驱动模块分析

机芯驱动首先调用函数:register_chrdev_region(tdev,0,Printer Device Name)从Linux内核申请设备编号。tdev表示机芯设备的设备号;Printer Device Name表示设备名称。然后调用prn_setup_cdev函数通过printer_device结构向Linux内核注册设备,告诉系统它所支持的设备类型以及操作类型。

其结构成员t Sem代表信号量;t Prn Info代表打印机芯状态信息,如:走纸量、走纸方向、打印方向、待打印点阵信息、黑标信息、故障信息等;t Cdev代表机芯设备。

t Cdev结构的ops成员指向一个file_operations结构,系统调用和驱动程序之间的联系就是通过它来进行的。这个数据结构定义了一系列IO操作的函数指针,如open()、read()、write()、ioctl()、close()等。用户程序发出文件操作的相关命令时,内核根据该结构体指针调用相应的操作函数,这样就完成了驱动和内核之间的通信。机芯驱动的file_operations结构体实现[2]:

prn_open函数打开打印机设备。prn_release函数关闭打印机设备。prn_write函数完成将点阵写入打印缓冲区的功能。prn_ioctl函数完成功能较多,如进纸操作、退纸操作、启动打印操作、定位黑标操作、设置字体操作、打印机初始操作等。

3.2 字符点阵解析驱动模块分析

本模块完成两大功能:获取字符点阵信息和点阵处理。获取字符点阵函数char2dot(),根据打印API输入的字符从GB18030字库中获得对应的点阵信息。此函数不但提供各种常见的字符点阵,如5×7、7×7、8×16西文点阵,24×24、16×16汉字点阵,而且还提供了用户自定义点阵字库接口。点阵处理函数dotdeal()完成对待打印的点阵进行处理的功能。它实现了倍宽、倍高、倍宽倍高、90度旋转、180度旋转等多种字体的功能。

3.3 打印API模块分析

在打印A P I模块中,根据应用程序的需求,将字符点阵解析驱动和机芯驱动提供的函数封装成各种实现具体功能的打印API,包括:字符打印、图像打印、进纸、退纸、定位黑标、设置字体、获取打印机状态、切纸等。下面介绍字符打印API的封装过程,该API由char2dot()、dotdeal()、write()、ioctl()等函数组合封装而成,如图2所示。如果机芯使用双步进针打机芯M-U110II[3],打印16×16汉字和7×7西文。由于汉字点阵分为上下半行各8点,因此打印一个汉字字符行,实际打印机分为两行打印,即首先打印上半行8个点,然后进行上下半行间走纸1步(如果汉字字体设为倍高,则走纸1 6步),接着打印下半行8个点,最后进行行间走纸,完成一个汉字字符行的打印。而西文点阵只占8点,打印一个西文字符行时,直接打印下半行8点,然后进行行间走纸,完成一个西文字符行的打印。

4 结束语

本文介绍了基于嵌入式Linux模块化的微型打印机驱动设计方案,在开发过程中,开发者可以对具有某种特定功能的模块进行独立开发而不需要花时间去协调与其他模块之间的关系,并且允许模块之间的水平开发,这样不仅加快开发进度也节省了开发成本。由于使用一套打印驱动,既支持现有的多款打印机芯,又为今后的产品升级提供了良好的接口环境,这样大大降低了产品的生产成本和后期维护成本,具有较高的实用价值。

参考文献

[1]ALESSANDRO RUBINI&JONATHAN CORBET,Linux Device Driver(3rd Edtion)[M].USA:O'Reilly&As-sociates Inc,2005

[2]周立功等.ARM嵌入式Linux系统构建与驱动开发范[M].北京:北京航天航空大学出版社,2006

税控收款机进项税额抵扣之我见 篇2

但是在税收领域依法纳税意识淡薄,偷税逃税现象依然比较严重,尤其是对财务核算不健全的纳税人,税务机关难以实施有效监控。这种现状不但严重扰乱正常的经济秩序,而且导致国家税收大量流失。为了进一步加强税源监控,堵塞税收漏洞,减少税收流失,国家税务总局、财政部、信息产业部、国家质检总局4月联合发布了〈国家税务总局、财政部、信息产业部、国家质量监督检验检疫总局关于推广应用税控收款机加强税源监控的通知〉(国税发[2004]44号),国税发[2004]44号决定在适用的行业推行使用税控收款机。

税控收款机的推行使用有利于加强税收的征收管理,但对于纳税人来说,购置税控收款机需要一笔支出,而且这笔支出换来的是”紧箍咒”,所以税控收款机的推广应用并非易事。为此财政部、国家税务总局2011月联合发文《财政部、国家税务总局关于推广税控收款机有关税收政策的通知》(财税[2004]167号), 财税[2004]167号规定:“为加快税控收款机的推行工作,减轻纳税人购进使用税控收款机的负担,现将有关纳税人购进使用税控收款机的税收优惠政策通知如下:

一、增值税一般纳税人购置税控收款机所支付的增值税税额(以购进税控收款机取得的增值税专用发票上注明的增值税税额为准),准予在该企业当期的增值税销项税额中抵扣。

二、增值税小规模纳税人或营业税纳税人购置税控收款机,经主管税务机关审核批准后,可凭购进税控收款机取得的增值税专用发票,按照发票上注明的增值税税额,抵免当期应纳增值税或营业税税额,或者按照购进税控收款机取得的普通发票上注明的价款,依下列公式计算可抵免税额:

价款

可抵免税额= ———— X 17%

1+17%

当期应纳税额不足抵免的,未抵免部分可在下期继续抵免。”

财税[2004]167号规定纳税人购进税控收款机的进项税额可以抵扣,不仅是增值税一般纳税人,还有小规模纳税人,甚至还包括营业税的纳税人。这样规定的目的是为了有利于税控收款机的应用推广,加强税收的征收管理,但我认为有它不合理的地方。

本文由www.FwSir.com收集整理,版权归原作者所有.

增值税一般纳税人应纳税额的计算采用购进扣税法,当期销项税额减去当期进项税额即为应纳税额,体现了对商品或劳务新增价值的征税。在销售额和销项税额既定的情况下,可抵扣的进项税额的大小,直接关系到应纳税额的多少,究竟哪些进项税额可以抵扣,哪些进项税额不可以抵扣,《增值税暂行条理》有严格而明确的规定。我国目前实行的还是生产型增值税,纳税人购进固定资产,无论是从国内购入的,还是从国外进口的,或者是接受捐赠的,其进项税额都是不能抵扣的。根据财税[2004]167号规定,纳税人购置税控收款机,购置费用没有达到固定资产标准的,进项税额可以抵扣, 购置费用达到了固定资产标准的,其进项税额也可以抵扣,则不尽合理,与目前我国实行的生产型增值税不符。

增值税小规模纳税人实行简易征收办法,按照6%(小规模商业企业4%)的征收率征税,它的税收负担并不因此低于一般纳税人,小规模纳税人的征收率是参照一般纳税人的税收负担设计的。根据《增值税暂行条例》的规定,小规模纳税人销售货物或者提供应税劳务,按照销售额和征收率计算应纳税额,不得抵扣进项税额。而财税[2004]167号规定税控收款机的进项税额可以抵扣, 而且当期应纳税额不足抵免的,未抵免部分可在下期继续抵免。这样的规定的有违《增值税暂行条例》。

营业税是对提供应税劳务(交通运输、建筑安装、金融保险等)、转让无形资产及销售不动产的单位和个人就其营业额征收的一种税。营业税是对纳税人的全部营业额计算征收的税种,跟增值税不一样,增值税是对销售货物、进口货物和提供加工修理修配劳务征税,对纳税人生产经营中新增加的价值部分征税,销项税额中要扣除进项税额,而营业税是不扣减进项税额的。营业税是对增值税的非应税项目征税,两个税种有着各自不同的征税范围, 有着不一样的计税方法,财税[2004]167号规定用购进税控收款机的增值税税额,抵免当期应纳营业税税额,当期应纳税额不足抵免的.,未抵免部分可在下期继续抵免,是很不妥当的。

财税[2004]167号规定税控收款机的进项税额可以抵扣从税收的角度是不尽合理的,从法律的角度来说也是不合法的。

从法的渊源看,《增值税暂行条例》和《营业税暂行条例》是行政法规,由国务院制定。《财政部、国家税务总局关于推广税控收款机有关税收政策的通知》(财税[2004]167号)是属于部门规章,由财政部和国家税务总局制定。根据《立法法》第79条“法律的效力高于行政法规、地方性法规、规章。 行政法规的效力高于地方性法规、规章”,上位法高于下位法。增值税、营业税的计算纳税分别是由《增值税暂行条例》和《营业税暂行条例》加以规定。《增值税暂行条例》规定一般纳税人购进固定资产进项税额是不能抵扣的,小规模纳税人是不抵扣进项税额的,《营业税暂行条例》规定的营业税应纳税额=销售额*税率,财税部门为了推广使用税控收款机,发布了财税[2004]167号,规定纳税人购置税控收款机所支付的增值税税额不管是一般纳税人还是小规模纳税人又或者是营业税纳税人都可以从应纳税额中抵扣或抵免,与《增值税暂行条理》和《营业税暂行条例》的规定是不符的,下位法的规定与上位法的规定不一致,应当是无效的。如果在税控收款机的应用推广过程中有较大的困难,确实需要税收优惠政策,相关部门应当向国务院报请立项,在真正的“法治”社会法律应当是高于一切的。

税控收款机中间件设计 篇3

嵌入式系统一般体积较小,没有大容量的硬盘,程序大都放在FLASH和ROM中,外部设备也是根据实际需要而选择并且没有相对统一的硬件标准,所以嵌入式系统的开发有十分明显的特殊性。但是随着嵌入式设备的大量应用和发展,设备的复杂性越来越高,硬件差异性越来越大,使得原有的对每一种硬件环境都进行独立开发的模式成本高,风险大,因此越来越多的嵌入式设备厂商开始探索提高软件复用能力的方法,并由此提出了一种新的解决办法—嵌入式中间件软件的开发[1,2]。嵌入式中间件的开发包含两个主要方面:它是一种中间件;同时它又是实时嵌入式的。

作为嵌入式中间件,其上层是和应用程序交互的接口;下层,则往往直接面对各种不同的硬件平台,面对没有统一标准的各种硬件系统,如何为用户提供统一可靠的接口,成为嵌入式中间件设计中亟需解决的难题,而且受嵌入式系统实时要求,资源受限等因素影响,进一步加大了嵌入式中间件设计的难度[3,4]。

2 税控收款机软件模型

目前,中间件技术的应用非常广泛。利用中间件可以很方便的地开发、集成、升级和维护应用系统,降低应用软件开发的成本,提高开发效率。在税控收款机中引入中间件的概念,搭建通用软件支撑平台,该平台是位于硬件、操作系统平台之上,应用层之下的中间适配层。该层向下屏蔽硬件平台或操作系统平台的差异,向上为应用层提供统一的接口。

图1是税控机软件的结构图。

中间件的设计涉及多种资源,包括操作系统、数据库、网络协议、编程语言等,要想统一使用异构环境中的这些资源,可以建立针对这些资源的构件库,以动态、灵活的方式进行构件的装配。另外,互操作是中间件的一个设计目标,它的关键是定义清晰且与实现无关的接口。互操作的实现也可以借助构件的思想。

3 税控收款机分层中间件设计

3.1 税控收款机分层中间件介绍

在税控收款机中间件平台中,中间件用于把税控机的应用程序与具体的底层硬件隔离开,使税控机应用程序可以透明的在平台上运行,而不涉及底层的硬件。税控机中间件把各种功能模块化,对外只提供接口API。图2表示了税控收款机这类嵌入式系统的纵向层次结构,其中高层中间层是一种将应用程序与底层的操作系统、硬件细节隔离开来的软件环境,主要包括税控层、GUI、Flash文件系统,以应用程序接口API的形式存在;底层中间层包括资源管理器、驱动库接口及各种需要的设备驱动程序等。

3.2 高层中间件设计

税控收款机的交互功能是由各种运行在税控机平台上的应用程序实现的,应用程序实现其功能的关键就是调用税控收款机中的中间件所包含的API,即应用程序与各功能模块之间的接口,而高层中间层包括税控层、GUI、Flash文件系统等完成诸如税控处理、信息存储等功能,其特点是与应用交互密切但功能完整,利于以构件化模块实现,可移植性较好。

税控模块是高层中间件的核心部分,其实现主要依靠税控流程的构件化。通过对税控信息的处理如发票分发、录入,和开票以及税控数据申报等税控管理操作,完成税控管理功能。模块整体结构图如3所示。

3.3 底层中间件设计

底层中间件包括资源管理器、驱动库接口及各种需要的设备驱动程序等完成诸如设备连接、信息存储等功能,其特点是直接操纵硬件和一些基础的软件功能模块,功能实现比较冗长,并含有较多的错误处理程序,可移植性差,相当于一个完整的PC机操作系统,因此底层中间件在税控收款机中处于核心地位,同时由于功能的相似性PC机的操作系统也对底层中间件的设计有一定的启发。

与PC机操作系统类似,税控收款机底层中间层也相应地由事件管理器、内存管理器、资源管理器、时钟和定时器模块、TCP IP网络模块及各种设备驱动程序构成,与PC机不同的是,税控收款机的所有信息都在显示屏上显示,因而要多出一个OSD接口模块,税控收款机的底层中间件的结构如图4所示。

4 底层中间件驱动设计实例

从税控收款机中间件的设计可以看出,用户在使用数据对象或服务时只能访问由税控机软件提供的一个标准用户程序接口,其他所有有关对象和服务的信息则保存在底层中间件中。对用户而言,这些对象和服务信息已被隐藏封装起来,屏蔽了底层操作。而对于底层驱动的设计是指当外部设备改变时,不用修改应用程序,只需在底层中间件增加几个相应接口的设备驱动即可实现对新设备的适配,通过中间件,税控收款机软件的通用性达到其设计目的。以系统提供的打印发票业务为例,当用户通过应用程序发出打印发票请求时,需要外部打印机提供服务。应用程序将请求发送到底层中间件进行处理,底层中间件通过驱动库接口根据需要调用驱动程序对设备控制器进行操作,设备控制器再去控制打印机本身。

下面简单介绍一下并口打印机驱动构件的设计。

4.1 打印数据块的数据格式

数据分为三部分:块头、数据和块尾,如下表所示。

4.2 打印机与主机的时序

主机准备实施打印,发数据前,先检测打印机的BUSY信号,当BUSY=0(即打印机空闲)时,主机接受打印任务事件。于是主机将STB由1变为0,开始发送数据,打印机开始接收数据。当数据发送完后,主机将STB由0变为1;当打印机接收完数据后,打印机将BUSY由0变1,同时启动打印程序。典型的并口打印机驱动流程如图5所示。

5 结论

税控收款机中间件系统采用分层结构设计的思想,使系统可以很方便的进行应用程序的移植与调试工作,并能实现系统的跨平台使用,增强了系统的稳固性和可维护性。应用程序可以方便的移植,所有代码只需编写一次就可在不同的硬件环境下运行,大大缩短了系统研制的周期,提高了开发效率,同时保证了系统的易升级性。实现了符合《税控收款机国家标准》提出的基本要求的税控收款机产品,能够达到实用化的效果。目前,本文所提出分层中间件已经在税控收款机软件系统开发中得到体现。该系统软件拥有完全的自主知识产权。已经与象山巨鹰科技发展有限公司合作,成功研发出GE3000B税控收款机,得到厂家的认可。

摘要:税控收款机中间件的设计采用分层结构的思想,以异构的硬件平台为基础,可方便的进行应用程序的移植与调试工作。同时对分层模块采用构件化的设计思想,给出了模块部分构件的设计模型,满足了可移植性和可靠性要求,增强了系统的通用性。

关键词:税控收款机,嵌入式中间件,分层设计,模块化

参考文献

[1]周圆春,李淼,张建,等.中间件技术综述[J].计算机工程与应用,2002(15):80-82.

[2]杨德仁,栾静,顾君忠.中间件技术比较研究[J].计算机系统应用,2005(3):27-30.

[3]冯继超.面向21世纪的嵌入式系统及发展方向[J].工业控制计算机,2001,14(5):1-2.

[4]盛哲,周陬,王宏远.嵌入式中间件设计的若干要点[J].电视技术,2004(7):21-23.

[5]张荣存、宋业伟.面向一类硬件的通用中间件模型设计[J].沈阳工业大学学报,2007(1).

[6]黄罡,王千祥,曹东刚,等.PKUAS:一种面向领域的构件运行支撑平台[J].电子学报,2002,30(12A).

[7]Bachman F,Bass L,Buhman C,et al.Technical Concepts of Component-Based Software Engineering(Volume II)[R].Technical Report图5并口打印机驱动流程CMU/SEI-2000-TR-008,2000.

上一篇:血尿β2微球蛋白下一篇:信息升级