基于Linux的RFID信息采集與處理系統(tǒng)
2 .2 應(yīng)用程序設(shè)計(jì)
Linux 是多任務(wù)系統(tǒng), 支持多線程及多進(jìn)程。多線程的優(yōu)點(diǎn)是線程比進(jìn)程小, 可以使應(yīng)用更輕便, 線程間通信方便;缺點(diǎn)是所有線程使用同一個地址空間, 如果一個線程出現(xiàn)問題, 整個系統(tǒng)將受影響; 而進(jìn)程各自占有一份內(nèi)存空間, 可以增強(qiáng)系統(tǒng)的穩(wěn)定性, 但是多進(jìn)程增加了系統(tǒng)開銷, 進(jìn)程間通信復(fù)雜。為此,根據(jù)實(shí)際情況,考慮到系統(tǒng)穩(wěn)定性, 本系統(tǒng)采取兩者相結(jié)合的方式分別完成數(shù)據(jù)采集處理及文件傳輸功能。
2 .2 .1 數(shù)據(jù)采集處理
數(shù)據(jù)采集處理是一個進(jìn)程, 它包括主線程和輔線程。主線程完成電子標(biāo)簽卡信息的讀取、寫入、實(shí)時顯示及查詢;輔線程實(shí)現(xiàn)一個時鐘以提供用戶當(dāng)前時間, 并定時對電池的電量進(jìn)行檢測和動態(tài)顯示, 在電量過低時發(fā)出警告。
應(yīng)用程序用MAIL 命令方式完成電子標(biāo)簽卡的讀寫。該進(jìn)程首先初始化屏幕, 然后等待按鍵中斷, 當(dāng)有鍵按下時, 根據(jù)鍵值執(zhí)行相應(yīng)的工作;
當(dāng)指定時間內(nèi)沒有鍵按下, 系統(tǒng)則進(jìn)入休眠狀態(tài), 從而達(dá)到省電的目的。程序流程圖如圖6。
當(dāng)成功采集到標(biāo)簽卡信息后, 應(yīng)用程序?qū)⒖ㄐ畔?包括卡號、卡狀態(tài)、用戶數(shù)據(jù)及當(dāng)前時間)通過OLED 顯示屏提供給用戶,并寫入一個文件進(jìn)行記錄。由于文件傳輸進(jìn)程會將該文件傳輸?shù)缴衔粰C(jī), 所以當(dāng)讀寫文件時要將文件上鎖。Linux 提供了文件鎖以防止不同進(jìn)程同時訪問同一個文 件。本文使用flock ( )函數(shù)對文件上鎖和解鎖。
由于OLED 是圖形點(diǎn)陣式顯示屏, 而且Flash 容量有限,所以不可能直接使用漢字字庫。系統(tǒng)預(yù)先提取所有用到的漢字、數(shù)字及字母的點(diǎn)陣數(shù)據(jù), 然后建立自己的字庫文件,從而使應(yīng)用程序可以對漢字、數(shù)字及字母進(jìn)行顯示。
2 .2 .2 文件傳輸
文件傳輸是一個進(jìn)程, 完成卡信息的上傳及其他數(shù)據(jù)的下載。與上位機(jī)通信采用Clinet/Server 模型。該進(jìn)程實(shí)質(zhì)上是一個服務(wù)器端(本系統(tǒng)) 的應(yīng)用程序, 它循環(huán)等待客戶端( 上位機(jī)) 的連接請求。當(dāng)請求到達(dá)時, 首先判斷請求來自哪個接口(USB 或者紅外接口),然后根據(jù)請求的類型執(zhí)行相應(yīng)的上傳或下載??紤]到實(shí)際應(yīng)用中可能會使用多臺手持式閱讀器, 為了方便上位機(jī)對信息的管理,規(guī)定文件名由手持式閱讀器編號和文件上傳序號組成, 程序在上傳文件時自動將其編號及上傳序號加入文件名。該進(jìn)程的流程 如圖7。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論