針對(duì)目前電子計(jì)價(jià)秤軟件作弊導(dǎo)致計(jì)量難、監(jiān)管難的問題,設(shè)計(jì)一種八CS — 30電子計(jì)價(jià)秤輸出截獲系統(tǒng),可 應(yīng)用于電子計(jì)價(jià)秤作弊檢測(cè)系統(tǒng),實(shí)現(xiàn)電子計(jì)價(jià)秤作弊自動(dòng)檢測(cè)。該ACS — 30電子計(jì)價(jià)秤輸出截獲系統(tǒng)以八tmel SAM3X8E為控制核心,基于電子計(jì)價(jià)秤常用顯示輸出設(shè)備LCD顯示屏、LED顯示屏的驅(qū)動(dòng)原理,對(duì)顯示屏引腳進(jìn)行 信號(hào)讀取,經(jīng)分析、處理后得到顯示屏顯示數(shù)值。實(shí)驗(yàn)結(jié)果表明,模擬載荷值為2. 0kg和10. 0kg時(shí),該系統(tǒng)對(duì)帶LED 顯示屏的電子計(jì)價(jià)秤的輸出截取錯(cuò)誤率分別為0%、0. 2%,對(duì)帶LCD顯示屏的電子計(jì)價(jià)秤的輸出截取錯(cuò)誤率分別為 0%、0. 1%,再結(jié)合上位機(jī)進(jìn)行二次校驗(yàn),錯(cuò)誤率低于百萬(wàn)分之一。該系統(tǒng)工作穩(wěn)定,適用性強(qiáng),可配合檢測(cè)系統(tǒng)實(shí)現(xiàn) 對(duì)電子計(jì)價(jià)秤的自動(dòng)化作弊檢測(cè)。
0.引言
電子計(jì)價(jià)秤作為一種常用的計(jì)量器具,具 有稱量方便、計(jì)算快捷、顯示直觀的優(yōu)點(diǎn),廣泛應(yīng)用 于超市、市場(chǎng)等交易場(chǎng)所的稱重測(cè)量。然而,不法分子利用各種手段人為地修改稱重結(jié)果,通過這些電子 秤作弊手法欺騙消費(fèi)者的不法行為時(shí)有發(fā)生,嚴(yán)重影 響貿(mào)易結(jié)算的公平性。在各種電子秤作弊的實(shí)現(xiàn)方 式中,軟件作弊由于其無(wú)需硬件改動(dòng)和易恢復(fù)等特 點(diǎn),使執(zhí)法人員往往對(duì)其束手無(wú)策,出現(xiàn)了計(jì)量難、監(jiān) 管難的問題3。對(duì)于電子計(jì)價(jià)秤軟件作弊,由于幾乎 不能獲取源代碼進(jìn)行白盒分析,所以其檢測(cè)方法通常 為窮舉法。面對(duì)眾多的密碼組合方式,須采用自動(dòng) 化檢測(cè)方法,其中,自動(dòng)截獲電子計(jì)價(jià)秤重量顯示器端的輸出結(jié)果是實(shí)現(xiàn)自動(dòng)化檢測(cè)的重要環(huán)節(jié)。
針對(duì)上述電子計(jì)價(jià)秤軟件作弊導(dǎo)致計(jì)量難、監(jiān)管 難的問題,本文設(shè)計(jì)用于電子計(jì)價(jià)秤作弊檢測(cè)的電子 計(jì)價(jià)秤輸出截獲系統(tǒng),在分析LED和LCD顯示屏顯 示原理和特點(diǎn)的基礎(chǔ)上,分別設(shè)計(jì)、實(shí)現(xiàn)基于 SAM3X8E的LED顯示屏輸出截取模塊和LCD顯示 屏輸出截取模塊,結(jié)合上位機(jī)實(shí)現(xiàn)電子稱軟件作弊檢 測(cè),具有很好的應(yīng)用前景。
1.電子計(jì)價(jià)秤作弊檢測(cè)系統(tǒng)
圖1是電子計(jì)價(jià)秤作弊自動(dòng)檢測(cè)裝置原理圖。 為達(dá)到自動(dòng)化測(cè)試要求,要求電子計(jì)價(jià)秤作弊檢測(cè)系 統(tǒng)的硬件可以實(shí)現(xiàn)以下功能:1)鍵盤模擬,通過軟件 對(duì)電子計(jì)價(jià)秤鍵盤輸入進(jìn)行模擬;)輸出截獲,截獲 電子計(jì)價(jià)秤稱重顯示器端輸出結(jié)果并傳輸給自動(dòng)化 測(cè)試控制軟件;3)模擬目標(biāo)電子稱的載荷信號(hào)。
圖1電子計(jì)價(jià)秤作弊自動(dòng)檢測(cè)裝置原理圖 考慮上述硬件需求,本電子計(jì)價(jià)秤作弊檢測(cè)系統(tǒng) 檢測(cè)部分采用C/S構(gòu)架,分為數(shù)據(jù)庫(kù)服務(wù)器端、測(cè)試 機(jī)端和單片機(jī)采集端。其中,服務(wù)器端運(yùn)行SQL SERVER數(shù)據(jù)庫(kù),作為系統(tǒng)的存儲(chǔ)數(shù)據(jù)庫(kù);測(cè)試機(jī)端 運(yùn)行上位機(jī)程序,作為作弊檢測(cè)系統(tǒng)的控制部分; ARM單片機(jī)采集端用于獲取電子秤屏幕顯示信息、 執(zhí)行電子秤按鍵閉合、模擬電子秤傳感器輸出數(shù)據(jù) 等。
上位機(jī)程序根據(jù)作弊碼規(guī)則自動(dòng)生成作弊碼序 列,將該序列傳送至單片機(jī),單片機(jī)控制電子開關(guān)執(zhí) 行鍵盤按鈕閉合操作模擬物理按鍵按下,并給出模擬 的重量傳感器信號(hào),再由電子秤顯示信息;此時(shí),輸出 截獲模塊抓取電子秤顯示屏數(shù)據(jù)進(jìn)行比較,以此判斷 電子秤是否作弊,循環(huán)執(zhí)行以下流程即可實(shí)現(xiàn)窮舉測(cè) 試:)清零、去皮操作;2)給定模擬載荷,獲取該載荷 下重量屏幕顯示值,并記為W0;3)輸入待測(cè)按鍵序 列;4)獲取當(dāng)前屏幕顯示值W1,并與W0作比較,判 斷該按鍵序列是否為作弊碼。
2.電子計(jì)價(jià)秤輸出截獲系統(tǒng)
ACS — 30電子計(jì)價(jià)秤的顯示一般分為“質(zhì)量” “單價(jià)” “總價(jià)” 3個(gè)顯示屏,常見的顯示輸出設(shè)備為LED數(shù)碼管或LCD液晶屏。
顯示屏輸出截獲可通過以下途徑實(shí)現(xiàn):)截獲主 控芯片發(fā)送給驅(qū)動(dòng)芯片的命令進(jìn)行破譯;2)直接捕捉 顯示屏管腳信息進(jìn)行破譯。方法1)僅需少量接線便 可捕捉3個(gè)顯示屏的信息,方便快捷,但需針對(duì)不同 驅(qū)動(dòng)芯片進(jìn)行編程適配;方法2)需較多的接線,但可 直接根據(jù)顯示原理獲取顯示屏信息,無(wú)需針對(duì)不同驅(qū) 動(dòng)芯片進(jìn)行編程適配,通用性強(qiáng)。綜合實(shí)際情況,本 文采用方法2)策略進(jìn)行顯示屏信息截獲。下面分別 介紹LED數(shù)碼管顯示屏、LCD液晶屏的輸出截獲系 統(tǒng)設(shè)計(jì)。
2. 1 LED顯示屏輸出截獲技術(shù)
2.1.1LED顯示屏輸出截獲原理
LED數(shù)碼管是由多個(gè)發(fā)光二極管封裝成“8”字 型器件,引線已在內(nèi)部連接,只需引出各筆劃段引腳 及公共電極。各筆畫段及公共電極分別由字母A、B、 C、D、E、F、G和DP來(lái)表示,如圖2所示。
LED數(shù)碼管按照結(jié)構(gòu)分為共陰極、共陽(yáng)極。共 陰極即COM端接低電平、相應(yīng)各筆畫段電極引腳接 高電平,即可點(diǎn)亮該段;共陽(yáng)極即COM端接高電、相 應(yīng)各筆畫段電極引腳接低電平,即可點(diǎn)亮該段。
由于質(zhì)量顯示屏由多位數(shù)字組成(通常為5位), 為節(jié)省主控芯片的I/O 口,其驅(qū)動(dòng)方式一般為動(dòng)態(tài)掃 描驅(qū)動(dòng),即通過專用LED數(shù)碼管驅(qū)動(dòng)芯片,分時(shí)輪流 控制各LED數(shù)碼管的COM端,使各數(shù)碼管輪流受控 顯示,每位元數(shù)碼管的點(diǎn)亮?xí)r間約為1ms或更短。由 于人類視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),各數(shù) 碼管輪流顯示方式給人的印象就如一組不存在閃爍 感的數(shù)字。
質(zhì)量顯示屏中驅(qū)動(dòng)LED接線方式為各位數(shù)碼管 相同段電極引腳相互連接,然后連接至驅(qū)動(dòng)芯片,各 COM引腳單獨(dú)連接至驅(qū)動(dòng)芯片,常見的LED驅(qū)動(dòng)芯片有!A6932、BL1616s 等[6一。
通過邏輯分析儀捕捉LED數(shù)碼管管腳電平可直 觀看出其驅(qū)動(dòng)原理,如圖3所示。圖中MyBus0[0]連 接電子計(jì)價(jià)秤重量顯示屏中最左側(cè)十位顯示位的 COM引腳,其后分別連接該位數(shù)碼管的G、F、A、B、 E、D引腳。可看出,當(dāng)十位的COM端置零時(shí),G、F、A、B、E、D引腳對(duì)應(yīng)電平序列為“101111”,根據(jù)圖2 可推斷該位顯示數(shù)字為“2”(對(duì)于純數(shù)字顯示,C引腳 電平不影響區(qū)分0?9數(shù)字顯示);從圖3還可看出該 顯示屏各個(gè)位數(shù)碼管點(diǎn)亮?xí)r間約為0. 2ms,完成一輪 掃描的時(shí)間約為 4ms。
LED數(shù)碼管驅(qū)動(dòng)芯片的COM引腳為開漏輸出, 故選定該位時(shí)COM引腳為低電平,未選中該位時(shí) COM引腳為高阻態(tài)。
通過上述分析,可得出LED數(shù)碼管顯示屏輸出 截取方法,以共陰極為例,掃描各位數(shù)碼管的COM 端,若該位COM端為低電平,讀取各段引腳電平,根 據(jù)圖2所示各段位置即可得出該位顯示數(shù)值。此時(shí), 完成所有位的COM引腳掃描即可得出重量顯示屏 的輸出數(shù)值。
2.1.2LED顯示屏輸出截獲技術(shù)
基于上述LED數(shù)碼管顯示屏輸出截取方法,設(shè) 計(jì)LED數(shù)碼管顯示屏輸出截取模塊,采用Atmel SAM3 X8E作為主控芯片,設(shè)置內(nèi)部上拉模式(用于 區(qū)分高阻態(tài)與低電平)逐位讀取各COM引腳電平, 當(dāng)該位COM引腳為低電平時(shí),讀取各筆畫段引腳電 平模擬值;通過閾值函數(shù),讀取該筆畫段引腳模擬信 號(hào)值,模擬信號(hào)值超過設(shè)定閾值時(shí)返回1,否則返回 0。讀取該位完畢后,返回的數(shù)值組成一個(gè)8位的字 節(jié),并與0?9數(shù)字的目標(biāo)字節(jié)進(jìn)行匹配,便可得到該 位的顯示數(shù)值。若返回字節(jié)與0?9數(shù)字的目標(biāo)字節(jié) 不匹配,則返回Error。掃描完該顯示屏所有COM引 腳,即可得到顯示屏的顯示值。圖4是LED數(shù)碼管 顯示屏輸出截取模塊程序流程圖。
該模塊接受上位機(jī)的命令后執(zhí)行上述截取程序, 獲得顯示屏的顯示值后,控制板通過串口將該顯示值 信息傳送至上位機(jī)進(jìn)行處理。
圖4 LED數(shù)碼管顯示屏輸出截取模塊程序流程圖
2.2LED顯示屏輸出截獲
2.2.1 LCD 顯示屏輸出截獲 段式LCD液晶屏管腳分為段電極(SEG)和背電 極(COM),與LED數(shù)碼管驅(qū)動(dòng)方式不同,LCD液晶 屏須采用交流電壓驅(qū)動(dòng),以保持其穩(wěn)定顯示。背電極 (COM)電平一直處于交流變換狀態(tài),當(dāng)某個(gè)背電極 (COM)和某個(gè)段電極(SEG)之間加上足夠的交流電 壓后,便將對(duì)應(yīng)段點(diǎn)亮。常見的臺(tái)式電子秤LCD驅(qū) 動(dòng)芯片有HT1621、TM7711等。
圖5所示為電子計(jì)價(jià)秤通常采用的LCD顯示屏 引腳圖,1?4管腳分別為COM1?COM4管腳,5?14 管腳分別為SEG1?SEG10管腳。若要使某一段顯 示,需在對(duì)應(yīng)的段電極(SEG)和背電極(COM)之間加 上足夠的交流電壓,即相應(yīng)背電極(COM)為最高電 壓值和對(duì)應(yīng)段電極(SEG)為最低電壓值,或背電極(COM)為最低電壓值和對(duì)應(yīng)段電極(SEG)為最高電 壓值。結(jié)合表1所示五位段式LCD顯示屏引腳功 能對(duì)照表,便可得到各個(gè)數(shù)字點(diǎn)亮的規(guī)則。
通過示波器分析LCD顯示屏背電極(COM)管 腳,分析結(jié)果如圖6所示,從上至下分別為COM1、 COM2、COM3、COM4的電平波形,COM1 口電平呈 周期變化,共有4種電平(電平個(gè)數(shù)取決于偏置設(shè)置 bias):最高、最低、次高和次低,每種電平持續(xù)時(shí)間約 2ms,最高電平比最低電平約高S 3V,COM1?COM4 按順序逐個(gè)掃描。
圖6 LCD背電極(COM1?COM4)電平示意圖 通過上述分析,可得出LCD顯示屏信息截取方 法:依次掃描4個(gè)背電極(COM1?COM4),電壓最低 時(shí),判斷各段電極(SEG)是否為最高電平,若是最高 電平,則對(duì)應(yīng)表1中的段點(diǎn)亮;若不是最高電平,則該 段不顯示。掃描完所有位,再結(jié)合圖6和表1的對(duì)應(yīng) 規(guī)則則可獲得顯示屏的顯示信息。
2.2.2 LCD顯示屏輸出截獲技術(shù)
基于上述LCD顯示屏信息截取算法,設(shè)計(jì)LCD 顯示屏輸出截取模塊:采用八tmel SAM3X8E單片機(jī) 作為主控芯片,采集LCD顯示屏各管腳模擬值信息, 按照上述LCD顯示屏信息截取方法分析、處理后獲 得顯示屏信息,再通過串口傳送至上位機(jī)進(jìn)行處理。
編程實(shí)現(xiàn)LCD顯示屏輸出截獲功能時(shí),按照逐 位捕捉的方式,分別得到每位數(shù)字,然后組合成質(zhì)量 顯示數(shù)值。每位顯示值均需2位段電極(SEG)和全 部4個(gè)背電極(COM)共同確定,故每一位顯示值對(duì)應(yīng) 的段電極分別為:左起第1位對(duì)應(yīng)SEG1、SEG2,第2 位對(duì)應(yīng)SEG3、SEG4,第3位對(duì)應(yīng)SEG5、SEG6,第4 位對(duì)應(yīng)SEG7、SEG8,第5位對(duì)應(yīng)SEG9、SEG10。以 第5位捕捉為例,圖7是其輸出截取程序流程圖,捕 捉其他位顯示值程序流程與之類似。
圖7 LCD第5位數(shù)字輸出截取程序流程圖 讀取段電極(SEG)模擬值時(shí),設(shè)置閾值函數(shù),讀 取段電極模擬信號(hào)值,模擬信號(hào)值超過閾值設(shè)定值時(shí) 返回1,否則返回0。讀取該位完畢后,返回的數(shù)值組 成一個(gè)8位的字節(jié),與0?9數(shù)字的目標(biāo)字節(jié)進(jìn)行匹 配,便可獲得該位的顯示數(shù)值;若返回字節(jié)與0?9數(shù) 字的目標(biāo)字節(jié)不匹配則返回 Error。
整個(gè)LCD顯示信息獲取需讀完所有位,其程序 流程圖與LED輸出截取模塊相同,如圖4所示。
3.系統(tǒng)實(shí)現(xiàn)和驗(yàn)證
通常電子計(jì)價(jià)秤輸出截獲的上位機(jī)程序采用 C#. net開發(fā),通過串口與ARM單片機(jī)控制板通信, 并控制單片機(jī)控制板對(duì)電子計(jì)價(jià)秤進(jìn)行模擬鍵盤輸 入、輸出截獲、模擬載荷等操作。電子計(jì)價(jià)秤輸出截 獲系統(tǒng)集成5大模塊:樣品管理模塊、按鍵序列生成
模塊、作弊檢測(cè)模塊、鍵盤適配模塊、歷史作弊碼模 塊。電子計(jì)價(jià)秤輸出截獲系統(tǒng)能快速檢測(cè)5位以內(nèi) 位數(shù)的作弊碼。圖8是電子計(jì)價(jià)秤輸出截獲系統(tǒng)運(yùn) 行界面。
下面對(duì)電子計(jì)價(jià)秤輸出截獲系統(tǒng)的輸出截獲效
果進(jìn)行實(shí)驗(yàn)驗(yàn)證。給定電子計(jì)價(jià)秤一個(gè)特定并穩(wěn)定 的載荷信號(hào),調(diào)用電子計(jì)價(jià)秤輸出截獲系統(tǒng)的輸出截 取模塊,每隔2s讀取1次輸出顯示值,分別測(cè)試1000 次。表2和表3分別該系統(tǒng)對(duì)帶LED顯示屏的電子 計(jì)價(jià)秤、帶LCD顯示屏電子計(jì)價(jià)秤的實(shí)驗(yàn)結(jié)果。
從表2和表3可以看出,未加校驗(yàn)的輸出截獲存 在一定的錯(cuò)誤率,所以需在上位機(jī)上對(duì)數(shù)據(jù)進(jìn)行2次 校驗(yàn):即若兩次截取值不同則重新截取,直至出現(xiàn)相 同值;并且在測(cè)試結(jié)束后,若判定電子計(jì)價(jià)秤存在作 弊,還需對(duì)判定的作弊密碼進(jìn)行復(fù)測(cè)。經(jīng)校驗(yàn)后的錯(cuò) 誤率低于百萬(wàn)分之一,則滿足相關(guān)測(cè)試標(biāo)準(zhǔn)的要 求。
4.結(jié)束語(yǔ)
本文設(shè)計(jì)的電子計(jì)價(jià)秤輸出截獲系統(tǒng)通過直 接捕捉LED與LCD顯示屏引腳信息實(shí)現(xiàn)顯示屏輸 出截取功能,與截取主控芯片發(fā)送給驅(qū)動(dòng)芯片命令的 方式相比,具有更好的通用性。
電子計(jì)價(jià)秤輸出截獲系統(tǒng)分別對(duì)帶LED顯 示屏的電子計(jì)價(jià)秤和對(duì)帶LCD顯示屏的電子計(jì)價(jià)秤的輸出截取錯(cuò)誤率為0%、0. 2% (模擬載荷值為 2 0kg和1Q 0kg)和0%、0. 1%(模擬載荷值為2 0kg 和10. 0kg),再通過上位機(jī)進(jìn)行2次校驗(yàn),錯(cuò)誤率低于 百萬(wàn)分之一。
3)電子計(jì)價(jià)秤輸出截獲系統(tǒng)穩(wěn)定性較高,通過 上位機(jī)校驗(yàn)后,準(zhǔn)確性滿足相關(guān)測(cè)試標(biāo)準(zhǔn)的要求,可 應(yīng)用于八CS — 30臺(tái)式電子計(jì)價(jià)秤等電子計(jì)價(jià)秤的作 弊測(cè)試,實(shí)用性強(qiáng)。