<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Linux的電子收款機稅源數據采集方案

基于Linux的電子收款機稅源數據采集方案

作者: 時(shí)間:2012-10-30 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:采集數據,對加強稅務(wù)監控有著(zhù)重要意義。本文稅控標準GB18240.1~GB18240.6,以使用 操作系統、并口打印機的為平臺,以采集銷(xiāo)售明細數據并在打印***上增加稅控碼為目的,提出了一種利用內核打印驅動(dòng)模塊修改和netlink socket 技術(shù)實(shí)現的。

本文引用地址:http://dyxdggzs.com/article/148299.htm

1. 引言

稅收是國家財政的重要組成部分,但是在稅收領(lǐng)域依法納稅意識淡薄,偷稅逃稅現象依然比較嚴重,尤其是對財務(wù)核算不健全的*,稅務(wù)機關(guān)難以實(shí)施有效監控。這種現狀不但嚴重擾亂正常的經(jīng)濟秩序,而且導致國家稅收大量流失。為了進(jìn)一步加強監控,堵塞稅收漏洞,減少稅收流失,國家先后出臺了稅控標準GB18240.1~GB18240.6 等六個(gè)部分,建立了以收款機+稅控器+稅控IC 卡+稅控收款機管理系統的基本工作模式,明確了以票控稅的基本原則。要求每當收款機上完成一筆銷(xiāo)售時(shí),收集其銷(xiāo)售明細數據,將其交由稅控器記錄統計,并將稅控器依據銷(xiāo)售明細數據生成的稅控碼添加到銷(xiāo)售小票上,以此來(lái)表示此筆銷(xiāo)售已被稅務(wù)機關(guān)記錄。本文所討論的便是一種從電子收款機采集稅源數據即銷(xiāo)售明細數據的解決。

因為電子收款機使用的操作系統有很多種,對于不同操作系統采集稅源數據的都有所不同。本文具體討論 操作系統下使用并口打印機的電子收款機的稅源方案,使用串口打印機的情形亦可參照。Windows 操作系統下的采集方案請查閱參考文獻。

2 方案設計

系統將打印機設備視為文件,通過(guò)對該文件的寫(xiě)操作來(lái)實(shí)現打印功能。通常情況下,對文件系統的監控是通過(guò)系統調用劫持來(lái)實(shí)現的。但是1) Linux 2.6 版本之后的內核,系統調用表的地址已經(jīng)不能導出,系統調用劫持的實(shí)現難度加大;2) 劫持 sys_write 系統調用后,所有的文件寫(xiě)入操作都會(huì )被劫持,對系統的性能有較大影響;3) 修改后的打印數據必須存入銷(xiāo)售軟件進(jìn)程的用戶(hù)內存空間,才能調用文件驅動(dòng)模塊write 函數將其打印出來(lái)。而侵入銷(xiāo)售軟件進(jìn)程將大大降低系統的獨立性和可靠性。

以上考慮,選擇了通過(guò)修改內核打印驅動(dòng)模塊來(lái)實(shí)現對電子收款機上銷(xiāo)售小票打印數據的截獲。

然而設備驅動(dòng)運行于內核態(tài),具有很大的局限性,如不能在終端上打印、不能做大延時(shí)的操作、不能使用C 的庫函數等等,難以滿(mǎn)足稅源系統的功能需要。所以需要一個(gè)用戶(hù)態(tài)的守護進(jìn)程常駐內存,對內核態(tài)采集到的數據進(jìn)行處理。

這樣整個(gè)稅源數據采集系統可以分為如下兩個(gè)部分:

1)內核空間

在 Linux 并口打印驅動(dòng)模塊中增加一個(gè)攔截函數,替換原有的lp_write 函數,負責將打印數據發(fā)送給用戶(hù)態(tài)的守護進(jìn)程,并在收到守護進(jìn)程返回的新的打印數據之后,將其打印出來(lái)。

2)用戶(hù)空間

實(shí)現一個(gè)常駐內存的用戶(hù)態(tài)守護進(jìn)程,負責接收內核截取到的打印數據,并在進(jìn)行處理后回送給內核。

Linux 電子收款機稅源數據采集系統框架圖

圖 1 Linux 電子收款機稅源數據采集系統框架圖

3 關(guān)鍵實(shí)現技術(shù)

實(shí)現上述設計的關(guān)鍵在于解決“內核態(tài)與用戶(hù)態(tài)的進(jìn)程間通信”、“攔截并口打印驅動(dòng)的write 操作”、“打印進(jìn)程的阻塞及喚醒”三個(gè)問(wèn)題。

3.1 內核態(tài)與用戶(hù)態(tài)的進(jìn)程間通信

本方案這種分為內核空間和用戶(hù)空間兩部分的結構設計,首先需要解決的就是內核態(tài)與用戶(hù)態(tài)的進(jìn)程間通信(interprocess communicatiON, IPC)。而在各種IPC 方法中,最適合此處設計需要的就是netlink socket 技術(shù)。

Netlink socket 最早出現于Linux 2.2 版的內核中,并在2. 4 版以后的版本中作為主要的內核與用戶(hù)空間的通信方式而被廣泛使用。相對于系統調用、ioctl 以及proc 文件系統等IPC方法而言,它具有簡(jiǎn)單易用、異步通信(適合大數據傳輸)、無(wú)編譯依賴(lài)(可模塊實(shí)現)、支持多播、支持內核發(fā)起會(huì )話(huà)等優(yōu)點(diǎn)。其中“異步通信、無(wú)編譯依賴(lài)、支持內核發(fā)起會(huì )話(huà)”

這三點(diǎn)正是本系統需要的關(guān)鍵特性,也是選用該技術(shù)的最主要原因。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>