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