<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 設計應用 > 基于Android平臺和藍牙的太陽輻照度采集系統(tǒng)

          基于Android平臺和藍牙的太陽輻照度采集系統(tǒng)

          作者:劉敏 賀永亮 時間:2015-04-29 來源:電子產(chǎn)品世界 收藏

            3 顯示與記錄

          本文引用地址:http://www.ex-cimer.com/article/273342.htm

            在與下位機模塊匹配成功之后,點擊配置界面中的按鈕,即可以進入到界面。數(shù)據(jù)采集界面支持豎屏和橫屏兩種顯示,以方便設備中手機和平板的使用。

            (1)橫豎屏顯示

            橫豎屏要解決的兩個問題:布局和重新載入。布局問題的解決,首先獲得邏輯顯示屏信息,比較寬度和高度的大小,判斷當前橫屏還是豎屏,分別設置不同的XML文件定義的界面布局,核心代碼如下:

            // 如果是橫屏
            if (width > height)
            {
            Orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            // 設置使用datacollectlandscape.xml文件定義的界面布局
            this.setContentView(R.layout.datacollectlandscape);
            }
            // 如果是豎屏
            else
            {
            Orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            // 設置使用datacollectportrait.xml文件定義的界面布局
            this.setContentView(R.layout.datacollectportrait);
            }

            重新載入問題的解決,AndroidManifest.xml文件中添加android:configChanges="orientation|keyboardHidden| screenSize",然后重寫onConfigurationChanged函數(shù)。在該函數(shù)中,實現(xiàn)橫豎屏切換時保持屏幕原有方向:

            this.setRequestedOrientation(Orientation);

            這樣在確定橫豎屏顯示之后,再旋轉屏幕,界面保持不變,數(shù)據(jù)采集不會中斷。

            (2)發(fā)送采集命令

            允許設置測試間隔時間,Android藍牙向下位機藍牙模塊按照測試間隔時間定時發(fā)送采集命令,通過設置定時器任務來實現(xiàn)。每次啟動一個發(fā)送采集命令的任務,部分代碼如下:

            // 獲得輸出流
            OutputStream os = socket.getOutputStream();
            // 向輸出流中寫入采集命令
            for (int i = 0; i < len; i++)
            {
            socket.write(cmd[i]);
            }

            (3)接收數(shù)據(jù),處理顯示

            首先創(chuàng)建讀取線程,在讀取線程中讀取下位機藍牙模塊發(fā)來的數(shù)據(jù)。部分代碼如下:

            // 獲得輸入流
            InputStream mmInStream =socket.getInputStream();
            //讀取數(shù)據(jù)
            readCount += mmInStream.read(buffer, readCount, countAll - readCount);

            這樣采集的數(shù)據(jù)放在了buffer數(shù)組中,下面的工作即是根據(jù)通信協(xié)議,對數(shù)組中的數(shù)據(jù)進行處理,數(shù)據(jù)錯誤提示錯誤緣由,數(shù)據(jù)正確則構造Message信息,采用Handler消息傳遞機制顯示在對應的文本框中。

            (4)記錄采集數(shù)據(jù)

            選中記錄復選框,可以自動記錄測試結果,將測試結果以文本格式保存至Android設備中,部分代碼如下:

            // 以指定文件創(chuàng)建 RandomAccessFile對象
            RandomAccessFile raf = new RandomAccessFile(targetFile, "rw");
            // 將文件記錄指針移動到最后
            raf.seek(targetFile.length());
            // 輸出文件內容
            raf.write(content.getBytes());
            raf.close();

            4 系統(tǒng)功能測試

            在手機端運行上位機軟件,進入到藍牙配置界面,依次進行打開藍牙、藍牙模塊匹配操作,匹配結果如圖3所示。然后點擊數(shù)據(jù)采集,根據(jù)手機屏幕進入到采集數(shù)據(jù)界面的橫屏或者豎屏顯示,設置好測試間隔時間,點擊啟動按鈕,采集結果如圖4、圖5所示。采集結束,點擊停止按鈕,按返回鍵至藍牙配置界面,點擊退出,確認。經(jīng)過測試,系統(tǒng)支持100米距離藍牙連接,運行正常,健壯性良好。目前已成功應用于一款計儀表中,并參展2014年國際太陽能產(chǎn)業(yè)及光伏工程(上海)展覽會,獲得好評。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();