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