電子臺(tái)秤作弊黑盒測(cè)試中顯示信息獲取的方法與實(shí)現(xiàn) 本文就電子臺(tái)秤軟件作弊檢測(cè)問(wèn)題介紹了一種電子臺(tái)秤作弊黑盒檢測(cè)系統(tǒng),針對(duì)該系統(tǒng)中的重要實(shí)現(xiàn)模塊——顯示信息獲取模塊,基于硬件分析給出相應(yīng)的實(shí)現(xiàn)方法并應(yīng)用于實(shí)際檢測(cè)中。 一、電子臺(tái)秤作弊黑盒檢測(cè)系統(tǒng)介紹 電子臺(tái)秤作弊黑盒檢測(cè)系統(tǒng)設(shè)計(jì)的出發(fā)點(diǎn)是能夠使該系統(tǒng)取代人工重復(fù)執(zhí)行窮舉測(cè)試。 系統(tǒng)檢測(cè)部分基于C/S 構(gòu)架,分為數(shù)據(jù)庫(kù)服務(wù)器端、測(cè)試機(jī)端和單片機(jī)采集端。服務(wù)器端運(yùn)行 SQLSERVER 數(shù)據(jù)庫(kù),作為系統(tǒng)的存儲(chǔ)數(shù)據(jù)庫(kù);測(cè)試機(jī)端運(yùn)行上位機(jī)程序,進(jìn)行作弊檢測(cè)系統(tǒng)的控制部分;單片機(jī)采集端用來(lái)獲取電子臺(tái)秤屏幕顯示信息、執(zhí)行電子臺(tái)秤按鍵閉合、模擬電子臺(tái)秤傳感器輸出數(shù)據(jù)等。 上位機(jī)程序根據(jù)作弊碼規(guī)則自動(dòng)生成作弊碼序列,將該序列傳入單片機(jī),單片機(jī)控制電子開(kāi)關(guān)執(zhí)行鍵盤(pán)按鈕閉合操作模擬物理按鍵按下,并給出模擬重量傳感器信號(hào),再由電子臺(tái)秤顯示信息獲取模塊抓取電子臺(tái)秤屏幕數(shù)據(jù)進(jìn)行比較來(lái)判斷電子秤是否作弊,循環(huán)執(zhí)行以下流程即可實(shí)現(xiàn)窮舉測(cè)試。 系統(tǒng)執(zhí)行流程: (1)清零、去皮操作;(2)給定模擬載荷,獲取該載荷下重量屏幕顯示值,并記做 W0;(3)輸入待測(cè)按鍵序列;(4)獲取當(dāng)前屏幕顯示值 W1,并與 W0 作比較,判斷該按鍵序列是否為作弊碼。 二、屏幕顯示信息獲取模塊 電子臺(tái)秤的顯示一般分為“重量”、“單價(jià)”、“總價(jià)”三個(gè)顯示屏。常見(jiàn)的電子臺(tái)秤為 LED 數(shù)碼管或 LCD 液晶屏,其中 LED 數(shù)碼管驅(qū)動(dòng)原理較為簡(jiǎn)單,本文主要對(duì) LCD 液晶屏的顯示信息獲取進(jìn)行討論。 顯示信息的獲取可以通過(guò):1,通過(guò)抓取主控芯片發(fā)送給驅(qū)動(dòng)芯片的命令進(jìn)行破譯;2,直接抓取 LCD 液晶屏管腳信息進(jìn)行破譯實(shí)現(xiàn)。*種方法僅需少量接線便可以抓取三個(gè)屏幕的信息,方便快捷,但需針對(duì)不同驅(qū)動(dòng)芯片進(jìn)行編程適配;第二種方法需要較多的接線,但是直接根據(jù) LCD 顯示原理進(jìn)行獲取,無(wú)需針對(duì)不同驅(qū)動(dòng)芯片做適配,通用性強(qiáng)。綜合實(shí)際情況,本文采用第二種獲取方法。 1.模塊原理 ACS-30 型電子臺(tái)秤 LCD 液晶屏一般采用段式 LCD 顯示屏,通常有六塊顯示屏:“重量”、“單價(jià)”、“總價(jià)”各兩塊,其中“重量”與“單價(jià)”顯示屏為 5 位 LCD,“總價(jià)”顯示屏為 6 位 LCD,其外觀如圖 1 所示。
段式 LCD 液晶屏管腳 分 為 段 電 極(SEG)與背電極(COM),不同于 LED 數(shù)碼管驅(qū)動(dòng)LCD 液晶屏的驅(qū)動(dòng)必須使用交流電壓驅(qū)動(dòng)才能保持穩(wěn)定的顯示。 背電極(COM)電平一直處于交流變換狀態(tài),當(dāng)某個(gè)背電極(COM)和某個(gè)段電極(SEG)之間加了足夠的交流電壓之后,就會(huì)將對(duì)應(yīng)的段點(diǎn)亮。常見(jiàn)的臺(tái)式電子臺(tái)秤 LCD 驅(qū)動(dòng)芯片有 HT1621、TM7711 等。 重 量 LCD 顯 示 屏 引 腳 如 圖 2 所 示:1~4 管 腳 分 別 為COM1~COM4 管腳 ,5~14 管腳分別為 SEG1~SEG10 管腳。若要使某一段顯示時(shí),需要在對(duì)應(yīng)的段電極(SEG)和背電極(COM)之間加上足夠的交流電壓,即:相應(yīng)背電極(COM)為zui高電壓值同時(shí)對(duì)應(yīng)段電極(SEG)為zui低電壓值;或背電極(COM)為zui低電壓值同時(shí)對(duì)應(yīng)段電極(SEG)為zui高電壓值。結(jié)合表 1,便可以得到各個(gè)數(shù)字點(diǎn)亮的規(guī)則。 用示波器對(duì) LCD 顯示屏背電極(COM)管腳進(jìn)行分析,如圖3 所示:COM1 口電平周期變化,共有 4 種電平(電平的個(gè)數(shù)取決于偏置設(shè)置:bias):zui高,zui低,次高,次低,每種電平持續(xù)時(shí)間 2ms 左右,zui高電平對(duì)zui低電平約 3.3v,COM1~COM4 按順序逐個(gè)掃描。 通過(guò)上述分析可以得出 LCD 顯示屏信息獲取算法:依次掃描4 個(gè)背電極(COM)為zui低電壓時(shí),判斷各段電極(SEG)是否為zui高電平,若是,則對(duì)應(yīng)表 1 中的段點(diǎn)亮;若否,則該段不顯示。掃描完所有的位,再結(jié)合圖 2 與表 1 的對(duì)應(yīng)規(guī)則就可獲得顯示屏的顯示信息。 2.模塊實(shí)現(xiàn) 基于上述 LCD 顯示屏信息獲取算法,可設(shè)計(jì)顯示信息采集模塊:采用 ARM 單片機(jī)作為主控芯片,采集 LCD 顯示屏各管腳模擬值信息,按照上述算法分析處理后得到顯示屏信息,再通過(guò)串口傳給上位機(jī)進(jìn)行處理。 具體編程實(shí)施抓取時(shí)按照逐位抓取的方式進(jìn)行,分別得到每一位的數(shù)字,然后再組合成重量顯示示數(shù):每一位顯示值均需2位段電極(SEG)和全部4個(gè)背電極(COM)共同確定,故每一位顯示值對(duì)應(yīng)的段電極分別為:左起*位對(duì)應(yīng) SEG1、SEG2,第二位對(duì)應(yīng) SEG3、SEG4,第三位對(duì)應(yīng) SEG5、SEG6,第四位對(duì)應(yīng) SEG7、SEG8,第五位對(duì)應(yīng) SEG9、SEG10。設(shè)定在每個(gè)背電極為zui低電壓時(shí),讀取對(duì)應(yīng)位的 2 個(gè)段電極(SEG)的模擬值,設(shè)置閾值函數(shù),讀取段電極模擬信號(hào)值超過(guò)該閾值時(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 顯示信息獲取需要讀完所有位,其程序流程圖如圖 4 所示。 測(cè)試時(shí),將該模塊連接線鉤掛在 LCD 顯示屏的引腳上,并統(tǒng)一好接地,便可以方便的讀取 LCD 屏幕顯示信息。 三、系統(tǒng)運(yùn)行 屏幕顯示信息獲取模塊通過(guò)串口與上位機(jī)連接,集成到系統(tǒng)中,接受上位機(jī)的抓取命令后執(zhí)行抓取程序并返回屏幕顯示值給上位機(jī)處理。該模塊直接根據(jù) LCD 液晶屏的特性進(jìn)行抓取,與驅(qū)動(dòng)芯片無(wú)關(guān),無(wú)需根據(jù)驅(qū)動(dòng)芯片做額外適配,通過(guò)上位機(jī)做校驗(yàn)后,抓取正確率滿足測(cè)試要求。 以上內(nèi)容來(lái)自上海偉酷電子臺(tái)秤有限公司,轉(zhuǎn)載請(qǐng)注明出處。 |