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