java Source

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            14 Posts :: 24 Stories :: 8 Comments :: 0 Trackbacks
          1.Library:RXTXComm.jar



          /*

           * GPSSerialPortScaner.java
           * Copyright (C) 2009  <JustinLei@gmail.com>
           *
           *        This program is free software; you can redistribute it and/or modify
           *        it under the terms of the GNU General Public License as published by
           *      the Free Software Foundation; either version 2 of the License, or
           *     (at your option) any later version.
           *
           *       This program is distributed in the hope that it will be useful,
           *      but WITHOUT ANY WARRANTY; without even the implied warranty of
           *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           *        GNU General Public License for more details.
           *
           
          */
          package org.lambdasoft.serial.gps;
          import gnu.io.CommPort;
          import gnu.io.CommPortIdentifier;
          import gnu.io.PortInUseException;
          import gnu.io.SerialPort;
          import gnu.io.UnsupportedCommOperationException;

          import java.io.InputStream;
          import java.util.Enumeration;

          import org.lambdasoft.ui.dialog.BubbleDialog;
          import org.lambdasoft.ui.systray.statusbar.StatusBar;
          import org.lambdasoft.util.StringUtils;

          /**
           * 
          @author lei.tang (justinlei@gmail.com)
           * @date 2010-3-8
           * 
          @version
           
          */
          public class GPSSerialPortScaner {
              
          private static GPSSerialPortScaner finder;
              
          private static final int SCANTIME = 2000;
              
          private static final int[] PORTSPEED = new int[]{4800,9600};
              
          private GPSSerialPortScaner() {}
              
              
          public static GPSSerialPortScaner getScaner() {
                  
          if(finder == null)
                      finder 
          = new GPSSerialPortScaner();
                  
          return finder;
              }

              
          public String scan() {
                  BubbleDialog.getBubble().display(
          "GPS設備自動搜索中",false,false);
                  
          for (int speed : PORTSPEED) {
                      String port 
          = scan(speed);
                      
          if(StringUtils.isNotEmpty(port))
                          
          return port;
                  }
                  
          return null;
              }
              
              @SuppressWarnings(
          "unchecked")
              
          public String scan(Integer speed) {
                  StatusBar statusBar 
          = StatusBar.getBar();
                  Enumeration
          <CommPortIdentifier> commons = CommPortIdentifier.getPortIdentifiers();
                  CommPortIdentifier com 
          = null;
                  CommPort serialPort 
          = null;
                  
          while (commons.hasMoreElements()) {
                      com 
          = commons.nextElement();
                      
          if(statusBar != null)
                          statusBar.setGPSInfo(
          "掃描GPS設備:" + com.getName() + " 掃描速率:" + speed);
                      
          try {
                          serialPort 
          = com.open("PortOpener"10);
                      } 
          catch (PortInUseException piue) {
                          serialPort 
          = null;
                          
          continue;
                      }
                      
          if (com.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                          SerialPort sp 
          = (SerialPort) serialPort;
                          
          try {
                              
          // Settings for B&G Hydra
                              sp.setSerialPortParams(speed.intValue(), SerialPort.DATABITS_8,
                                      SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
                          } 
          catch (UnsupportedCommOperationException ucoe) {
                              serialPort 
          = null;
                              
          continue;
                          }
                      }
                      
          try {
                          InputStream input 
          = serialPort.getInputStream();
                          
          int readChar = -1;
                          
          long currentTime = System.currentTimeMillis();
                          
          while((System.currentTimeMillis() - currentTime) <= SCANTIME) {
                              
          if((readChar = input.read()) == -1) {
                                  
          continue;
                              }
                              
          if((char)readChar == '$') {
                                  StringBuilder builder 
          = new StringBuilder();
                                  
          for (int j = 0; j < 5; j++) {
                                      builder.append((
          char)(input.read()));
                                  }
                                  String head 
          = builder.toString();
                                  
          if(head.equals("GPGGA")) {
                                      serialPort.close();
                                      
          if(statusBar != null) {
                                          String successMsg 
          = "GPS設備在端口" + com.getName() +"初始化成功,速率: " + speed;
                                          BubbleDialog.getBubble().display(successMsg,
          false,true);
                                          statusBar.setGPSInfo(successMsg);
                                      }
                                      
          return com.getName();
                                  }
                              }
                          }
                      } 
          catch (Exception e) {
                          
          return null;
                      }
                      serialPort.close();
                  }
                  
          if(serialPort != null)
                      serialPort.close();
                  
          return null;
              }
          }
          posted on 2010-04-06 16:47 JustinLei 閱讀(1497) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 潼南县| 沙坪坝区| 息烽县| 崇信县| 舞阳县| 合川市| 广德县| 义乌市| 元江| 汝阳县| 寻甸| 淅川县| 新邵县| 闽侯县| 晋江市| 砚山县| 洱源县| 区。| 客服| 张掖市| 青铜峡市| 十堰市| 宝清县| 鄂尔多斯市| 托克托县| 油尖旺区| 昌图县| 大姚县| 天台县| 阳高县| 遂昌县| 清涧县| 海盐县| 酉阳| 英山县| 出国| 金寨县| 绥江县| 乌海市| 方正县| 茶陵县|