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