• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    基于Android平臺和藍牙的太陽輻照度采集系統

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

      3 顯示與記錄

    本文引用地址:http://www.czjhyjcfj.com/article/273342.htm

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

      (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函數。在該函數中,實現橫豎屏切換時保持屏幕原有方向:

      this.setRequestedOrientation(Orientation);

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

      (2)發送采集命令

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

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

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

      首先創建讀取線程,在讀取線程中讀取下位機藍牙模塊發來的數據。部分代碼如下:

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

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

      (4)記錄采集數據

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

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

      4 系統功能測試

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


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 定西市| 双城市| 福清市| 黔西| 永年县| 英山县| 云浮市| 清河县| 乌审旗| 长宁区| 遵化市| 晋城| 措美县| 黄山市| 威宁| 武冈市| 突泉县| 乌鲁木齐市| 资源县| 枣阳市| 杭州市| 鲁甸县| 广灵县| 宜君县| 大理市| 荃湾区| 都江堰市| 霍州市| 宾阳县| 金门县| 绥棱县| 南京市| 山西省| 若尔盖县| 运城市| 兴业县| 舟曲县| 贺州市| 唐海县| 泸水县| 祥云县|