亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開(kāi)發(fā) > Java > 正文

Java使用開(kāi)源Rxtx實(shí)現(xiàn)串口通訊

2024-07-14 08:43:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例為大家分享了Java使用開(kāi)源Rxtx實(shí)現(xiàn)串口通訊的具體代碼,供大家參考,具體內(nèi)容如下

使用方法:

windows平臺(tái):

1、把rxtxParallel.dll、rxtxSerial.dll拷貝到:C:/WINDOWS/system32下。

2、如果是在開(kāi)發(fā)的時(shí)候(JDK),需要把RXTXcomm.jar、rxtxParallel.dll、rxtxSerial.dll拷貝到../jre.../lib/ext下;如:D:/Program Files/Java/jre1.6.0_02/lib/ext

3、而且需要把項(xiàng)目1.右鍵->2.Preperties(首選項(xiàng))->3.Java Build Path->4.Libraries->5.展開(kāi)RXTXcomm.jar->6.Native library location:(None)->7.瀏覽External Folder(選擇至該項(xiàng)目的lib文件夾,如:E:/Item/MyItem/WebRoot/WEB-INF/lib).

import gnu.io.*;import java.io.*; import java.util.*; import com.call.dao.*;  public class SerialReader extends Observable implements Runnable,SerialPortEventListener { static CommPortIdentifier portId; int delayRead = 100; int numBytes; // buffer中的實(shí)際數(shù)據(jù)字節(jié)數(shù) private static byte[] readBuffer = new byte[1024]; // 4k的buffer空間,緩存串口讀入的數(shù)據(jù) static Enumeration portList; InputStream inputStream; OutputStream outputStream; static SerialPort serialPort; HashMap serialParams; Thread readThread;//本來(lái)是static類(lèi)型的 //端口是否打開(kāi)了 boolean isOpen = false; // 端口讀入數(shù)據(jù)事件觸發(fā)后,等待n毫秒后再讀取,以便讓數(shù)據(jù)一次性讀完 public static final String PARAMS_DELAY = "delay read"; // 延時(shí)等待端口數(shù)據(jù)準(zhǔn)備的時(shí)間 public static final String PARAMS_TIMEOUT = "timeout"; // 超時(shí)時(shí)間 public static final String PARAMS_PORT = "port name"; // 端口名稱(chēng) public static final String PARAMS_DATABITS = "data bits"; // 數(shù)據(jù)位 public static final String PARAMS_STOPBITS = "stop bits"; // 停止位 public static final String PARAMS_PARITY = "parity"; // 奇偶校驗(yàn) public static final String PARAMS_RATE = "rate"; // 波特率  public boolean isOpen(){  return isOpen; } /**  * 初始化端口操作的參數(shù).  * @throws SerialPortException   *   * @see  */ public SerialReader() {  isOpen = false; }  public void open(HashMap params)  {   serialParams = params;  if(isOpen){  close();  }  try  {   // 參數(shù)初始化   int timeout = Integer.parseInt( serialParams.get( PARAMS_TIMEOUT )    .toString() );   int rate = Integer.parseInt( serialParams.get( PARAMS_RATE )    .toString() );   int dataBits = Integer.parseInt( serialParams.get( PARAMS_DATABITS )    .toString() );   int stopBits = Integer.parseInt( serialParams.get( PARAMS_STOPBITS )    .toString() );   int parity = Integer.parseInt( serialParams.get( PARAMS_PARITY )    .toString() );   delayRead = Integer.parseInt( serialParams.get( PARAMS_DELAY )    .toString() );   String port = serialParams.get( PARAMS_PORT ).toString();   // 打開(kāi)端口   portId = CommPortIdentifier.getPortIdentifier( port );   serialPort = ( SerialPort ) portId.open( "SerialReader", timeout );   inputStream = serialPort.getInputStream();   serialPort.addEventListener( this );   serialPort.notifyOnDataAvailable( true );   serialPort.setSerialPortParams( rate, dataBits, stopBits, parity );      isOpen = true;  }  catch ( PortInUseException e )  {   // 端口"+serialParams.get( PARAMS_PORT ).toString()+"已經(jīng)被占用";  }  catch ( TooManyListenersException e )  {   //"端口"+serialParams.get( PARAMS_PORT ).toString()+"監(jiān)聽(tīng)者過(guò)多";  }  catch ( UnsupportedCommOperationException e )  {   //"端口操作命令不支持";  }  catch ( NoSuchPortException e )  {   //"端口"+serialParams.get( PARAMS_PORT ).toString()+"不存在";  }  catch ( IOException e )  {   //"打開(kāi)端口"+serialParams.get( PARAMS_PORT ).toString()+"失敗";  }  serialParams.clear();  Thread readThread = new Thread( this );  readThread.start(); }    public void run() {  try  {   Thread.sleep(50);  }  catch ( InterruptedException e )  {  } }  public void start(){  try {   outputStream = serialPort.getOutputStream();   }  catch (IOException e) {} try{   readThread = new Thread(this);  readThread.start(); }  catch (Exception e) { } } //start() end   public void run(String message) { try {   Thread.sleep(4);    }   catch (InterruptedException e) { }   try {  if(message!=null&&message.length()!=0)  {   System.out.println("run message:"+message);   outputStream.write(message.getBytes());  } } catch (IOException e) {} }    public void close()  {   if (isOpen)  {   try   {    serialPort.notifyOnDataAvailable(false);    serialPort.removeEventListener();    inputStream.close();    serialPort.close();    isOpen = false;   } catch (IOException ex)   {   //"關(guān)閉串口失敗";   }  } }  public void serialEvent( SerialPortEvent event ) {  try  {   Thread.sleep( delayRead );  }  catch ( InterruptedException e )  {   e.printStackTrace();  }  switch ( event.getEventType() )  {   case SerialPortEvent.BI: // 10   case SerialPortEvent.OE: // 7   case SerialPortEvent.FE: // 9   case SerialPortEvent.PE: // 8   case SerialPortEvent.CD: // 6   case SerialPortEvent.CTS: // 3   case SerialPortEvent.DSR: // 4   case SerialPortEvent.RI: // 5   case SerialPortEvent.OUTPUT_BUFFER_EMPTY: // 2    break;   case SerialPortEvent.DATA_AVAILABLE: // 1    try    {     // 多次讀取,將所有數(shù)據(jù)讀入      while (inputStream.available() > 0) {      numBytes = inputStream.read(readBuffer);      }            //打印接收到的字節(jié)數(shù)據(jù)的ASCII碼      for(int i=0;i<numBytes;i++){      // System.out.println("msg[" + numBytes + "]: [" +readBuffer[i] + "]:"+(char)readBuffer[i]);      }//     numBytes = inputStream.read( readBuffer );     changeMessage( readBuffer, numBytes );    }    catch ( IOException e )    {     e.printStackTrace();    }    break;  } } // 通過(guò)observer pattern將收到的數(shù)據(jù)發(fā)送給observer // 將buffer中的空字節(jié)刪除后再發(fā)送更新消息,通知觀察者 public void changeMessage( byte[] message, int length ) {  setChanged();  byte[] temp = new byte[length];  System.arraycopy( message, 0, temp, 0, length );  notifyObservers( temp ); } static void listPorts() {  Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();  while ( portEnum.hasMoreElements() )  {   CommPortIdentifier portIdentifier = ( CommPortIdentifier ) portEnum    .nextElement();     } }   public void openSerialPort(String message) {  HashMap<String, Comparable> params = new HashMap<String, Comparable>();   otherDAO odao=new otherDAO();  String port=odao.selectNumberById(15);  String rate = "9600";  String dataBit = ""+SerialPort.DATABITS_8;  String stopBit = ""+SerialPort.STOPBITS_1;  String parity = ""+SerialPort.PARITY_NONE;   int parityInt = SerialPort.PARITY_NONE;   params.put( SerialReader.PARAMS_PORT, port ); // 端口名稱(chēng)  params.put( SerialReader.PARAMS_RATE, rate ); // 波特率  params.put( SerialReader.PARAMS_DATABITS,dataBit ); // 數(shù)據(jù)位  params.put( SerialReader.PARAMS_STOPBITS, stopBit ); // 停止位  params.put( SerialReader.PARAMS_PARITY, parityInt ); // 無(wú)奇偶校驗(yàn)  params.put( SerialReader.PARAMS_TIMEOUT, 100 ); // 設(shè)備超時(shí)時(shí)間 1秒  params.put( SerialReader.PARAMS_DELAY, 100 ); // 端口數(shù)據(jù)準(zhǔn)備時(shí)間 1秒  try { open(params);//打開(kāi)串口 LoginFrame cf=new LoginFrame(); addObserver(cf); if(message!=null&&message.length()!=0) { String str=""; for(int i=0;i<10;i++) {  str+=message; }  start();   run(str);  }  } catch (Exception e) {  } } static String getPortTypeName( int portType ) {  switch ( portType )  {   case CommPortIdentifier.PORT_I2C:    return "I2C";   case CommPortIdentifier.PORT_PARALLEL:    return "Parallel";   case CommPortIdentifier.PORT_RAW:    return "Raw";   case CommPortIdentifier.PORT_RS485:    return "RS485";   case CommPortIdentifier.PORT_SERIAL:    return "Serial";   default:    return "unknown type";  } }   public HashSet<CommPortIdentifier> getAvailableSerialPorts()//本來(lái)static {  HashSet<CommPortIdentifier> h = new HashSet<CommPortIdentifier>();  Enumeration thePorts = CommPortIdentifier.getPortIdentifiers();  while ( thePorts.hasMoreElements() )  {   CommPortIdentifier com = ( CommPortIdentifier ) thePorts    .nextElement();   switch ( com.getPortType() )   {    case CommPortIdentifier.PORT_SERIAL:     try     {      CommPort thePort = com.open( "CommUtil", 50 );      thePort.close();      h.add( com );     }     catch ( PortInUseException e )     {      System.out.println( "Port, " + com.getName()       + ", is in use." );     }     catch ( Exception e )     {      System.out.println( "Failed to open port "       + com.getName() + e );     }   }  }  return h; }} //ASCII表//-------------------------------------------------------------//     ASCII Characters       //       //Dec Hex  Char Code Dec Hex Char//       //0  0   NUL   64 40 @//1  1   SOH   65 41 A//2  2   STX   66 42 B//3  3   ETX   67 43 C//4  4   EOT   68 44 D//5  5   ENQ   69 45 E//6  6   ACK   70 46 F//7  7   BEL   71 47 G//8  8   BS    72 48 H//9  9   HT    73 49 I//10 0A  LF    74 4A J//11 0B  VT    75 4B K//12 0C  FF    76 4C L//13 0D  CR    77 4D M//14 0E  SO    78 4E N//15 0F  SI    79 4F O//16 10  SLE   80 50 P//17 11  CS1   81 51 Q//18 12  DC2   82 52 R//19 13  DC3   83 53 S//20 14  DC4   84 54 T//21 15  NAK   85 55 U//22 16  SYN   86 56 V//23 17  ETB   87 57 W//24 18  CAN   88 58 X//25 19  EM    89 59 Y//26 1A  SIB   90 5A Z//27 1B  ESC   91 5B [//        92 5C  ///28 1C  FS    93 5D ]//29 1D  GS    94 5E ^//30 1E  RS    95 5F _//31 1F  US    96 60 `//32 20 (space)   97 61 a//33 21  !    98 62 b//34 22  " //        99 63 c//35 23  #    100 64 d//36 24  $     //37 25  %    101 65 e//38 26  &    102 66 f//39 27  '    103 67 g//40 28  (    104 68 h//41 29  )    105 69 i//42 2A  *    106 6A j//43 2B  +    107 6B k//44 2C  ,    108 6C l//45 2D  -    109 6D m//46 2E  .    110 6E n//47 2F  /    111 6F o//48 30  0    112 70 p//49 31  1    113 72 q//50 32  2    114 72 r//51 33  3    115 73 s//52 34  4    116 74 t//53 35  5    117 75 u//54 36  6    118 76 v//55 37  7    119 77 w//56 38  8    120 78 x//57 39  9    121 79 y//58 3A  :    122 7A z//59 3B  ;    123 7B {//60 3C  <    124 7C |//61 3D  =    125 7D }//62 3E  >    126 7E ~//63 3F  ?    127 7F 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产av人人夜夜澡人人爽| 亚洲性生活视频在线观看| 久草在线视频福利| 午夜视频精品| 国产ts变态重口人妖hd| aa在线观看视频| 欧美一级黄色录像片| jizzjizzjizzjizz日本| 免费污网站在线观看| 米仓穗香在线观看| 三级在线看中文字幕完整版| 精品伊人久久| 三级视频在线看| 久草影视在线| 97人人模人人爽人人少妇| 欧美三级在线看| 综合中文字幕亚洲| 欧美伊久线香蕉线新在线| 欧美与亚洲与日本直播| 99精品国产一区二区三区2021| 中文字幕久久久| 亚洲制服国产| 鲁丝一区鲁丝二区鲁丝三区| 色综合亚洲精品激情狠狠| 国产精品丝袜黑色高跟鞋| 在线观看欧美一区| 99国产精品无码| 国产精品无码一区二区三区| 伊人久久成人| 四虎成人精品在永久在线观看| 蜜臀在线免费观看| 777精品伊人久久久久大香线蕉| 欧美成人专区| 成年女人18级毛片毛片免费| 国产精品国产自产拍高清av王其| 亚洲精品午夜| 日韩av电影免费在线| 日韩啊v在线| aa免费在线观看| 天天堂资源网在线观看免费视频| 在线播放国产一区二区三区| 久久人人爽人人爽人人片av高清| 亚洲精品在线免费观看视频| 亚洲欧美韩国| 美女欧美视频在线观看免费| 北条麻妃在线一区二区| 久久久噜噜噜久噜久久综合| 日韩免费高清av| 中国视频免男男gay| 视频一区国产精品| 欧美大片在线播放| 一本一道久久综合狠狠老| 欧美日韩亚洲一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲国产另类 国产精品国产免费| 九九久久九九| 91caoporn在线| 成人搞黄视频| 两个人看的免费完整在线观看| 精品成人一区二区三区| 中文字幕一区二区视频| www.久久久久久久久| 亚洲成a天堂v人片| 免费看欧美女人艹b| 国产精品色午夜在线观看| 精品国产一区二区三区性色av| 亚洲午夜免费福利视频| 久草福利在线| 亚洲精品国产一区二区在线| 经典三级一区二区| 欧美一区影院| 国产99久久久国产精品潘金网站| 污版网站在线观看| 欧美日韩中文字幕日韩欧美| 日韩高清在线电影| 国产日韩欧美视频在线| 亚洲高清不卡av| 日本韩国欧美国产| 蜜桃狠狠色伊人亚洲综合网站| 久久99亚洲网美利坚合众国| 欧美另类一区| 三级av免费观看| 男男成人高潮片免费网站| 9191成人精品久久| 精品91一区二区三区| 岛国av中文字幕| 蜜桃狠狠狠狠狠狠狠狠狠| 97国产精品videossex| 欧美韩日亚洲| 亚洲精品乱码久久久久久蜜桃动漫| 亚洲最新无码中文字幕久久| 性猛交富婆╳xxx乱大交一| 激情久久五月| 伊人免费在线观看高清版| 美女日韩欧美| metart日本精品嫩模| 免费看片91| av一区在线播放| 国产精品999视频| 精品人妻一区二区三区潮喷在线| 国产精品极品尤物在线观看| 国产亚洲欧美日韩日本| 成人性教育av免费网址| 日韩av女优在线观看| 精品久久久久久久久久久久久久久久久| 黄色一级大片在线免费看国产| 偷偷要91色婷婷| 免费一级欧美片在线观看网站| 色婷婷精品久久二区二区蜜臂av| 国产天堂av在线| 国产免费视频一区二区三区| 中文字幕日本一区二区| 国产精品美女视频| 欧美电影《睫毛膏》| 91免费看`日韩一区二区| 亚洲av熟女国产一区二区性色| 日韩成人在线电影网| 欧洲美女和动交zoz0z| 96精品视频| 久久免费99精品久久久久久| 国产精品xxxxx| 亚洲大尺度视频| 日韩精品人妻中文字幕| 国产精品一区视频| 国产午夜精品视频免费不卡69堂| 欧美黄色一区二区| 久久天天躁狠狠躁老女人| 电影亚洲一区| 国产交换配乱淫视频免费| 色婷婷久久一区二区三区麻豆| 成人免费乱码大片a毛片软件| 日韩毛片一区| 欧美午夜不卡视频| 51妺嘿嘿午夜福利| 91 视频免费观看| 国产欧美日韩在线播放| 欧美福利视频网站| 中文乱码字幕午夜无线观看| 91麻豆视频在线观看| 91成人app| 在线成人性视频| 亚洲日本理论电影| 久久99国产精品| 国产精品自拍99| 久久精品无码一区| 亚洲一区二区蜜桃| 欧美一区二区三区免费大片| 99精品全国免费观看视频软件| 亚洲国产精品人人做人人爽| 亚洲欧洲免费无码| japansex久久高清精品| 久久久久久久久久一级| 波多野结衣免费观看| 搞黄网站免费观看| 黄色免费观看| 青春草在线视频观看| 91麻豆免费观看| 秋霞av国产精品一区| 成年人黄色电影| 亚洲综合中文| 久久久亚洲精华液精华液精华液| 色婷婷亚洲十月十月色天| 天堂在线一二区| 奇米影视第四色7777| 国产精品天干天干在观线| 欧美性猛xxx| 91久久精品一区二区三| 高跟丝袜欧美一区| 欧美aaaaa喷水| 中文字幕精品无码亚| 精品一区二区三区亚洲| 高清乱码毛片入口| 日产精品99久久久久久| 精品免费一区二区| 欧美一区二区日韩| 亚洲自拍偷拍av| 97av免费视频| 精品国产大片大片大片| 久久久久亚洲蜜桃| 中文字幕第24页| 国产成人av电影在线播放| 影音先锋中文字幕一区二区| 精品一区二区三区四| 国外成人福利视频| 欧美国产日韩一区二区| 一区二区成人精品| gogo人体一区| 在线成人激情视频| 手机看片福利在线| 国内精品视频一区| 狠狠噜天天噜日日噜| 天天操夜夜操视频| 一区二区精品国产| 色琪琪丁香婷婷综合久久| 国产区一区二区三区| 22288色视频在线观看| 久久国产精品久久久久| 久久久久久久毛片| 成年人网站在线观看视频| 亚洲黄一区二区三区| 亚洲日本高清| 欧美精品日韩一区| 中国一级特黄毛片| 亚欧无线一线二线三线区别| 色综合男人天堂| 一区二区三区欧美久久| 老司机aⅴ毛片免费观看| 午夜一区二区三区| 久久免费激情视频| 超碰中文字幕在线观看| 国产日韩欧美在线一区| 亚洲性猛交xxxx乱大交| 亚洲网站情趣视频| 成人在线短视频| 国v精品久久久网| 天天操综合网| 亚洲精品一区二区三区香蕉| 午夜久久中文| 天天干天天草天天射| 日韩黄色在线| gogogo影视剧免费观看在线观看| 日韩电影免费观看| 欧美在线欧美在线| 色婷婷av国产精品| 日日夜夜天天综合| 国产黄色一级网站| 羞羞的视频网站| 全彩无遮拦全彩口工漫画全彩| 男人的天堂avav| 伊人av在线com| 日韩一区二区在线播放| 日韩在线观看电影完整版高清免费悬疑悬疑| 黑丝一区二区三区| 精品久久国产视频| 精品久久久久亚洲| 国产欧美自拍一区| 欧美日一区二区在线观看| 色综合狠狠操| jizzjizzjizz在线观看| 日韩欧美一区二区免费| 看黄色录像一级片| 伊人精品综合| 不卡av电影在线播放| 亚洲欧美日韩精品综合在线观看| 国产91精品一区二区绿帽| 9191精品国产综合久久久久久| 亚洲免费一级视频| 亚洲天堂2014| 成人一区二区三区视频| 国产精品一区二区av白丝下载| www.久久久.com| 漫画在线观看av| 国产欧美午夜| 精品亚洲乱码一区二区| 日日骚一区二区三区| 久久精品国产第一区二区三区最新章节| 青青青在线视频| 国产精品欧美亚洲777777| 国产无套丰满白嫩对白| 国产无遮挡又黄又爽免费软件| 黄色免费直接看| 欧美性猛交ⅹxxx乱大交免费| 你懂的在线观看一区二区| 麻豆tv在线观看| 久久久久久久国产| 色网站免费在线观看| 夜夜操com| 在线免费观看日韩视频| 午夜成人在线视频| 亚洲精品国产美女| 欧美成人免费观看| аⅴ资源新版在线天堂| 亚洲一区二区在线视频| 亚洲天堂av免费在线观看| wwwav91| 国产又色又爽又黄又免费| 综合视频在线| 91玉足脚交嫩脚丫在线播放| 久久视频这里只有精品| 午夜亚洲一区| 5g影院5g电影天天爽快| 国产亚洲aⅴaaaaaa毛片| 日韩欧美成人网| 欧美xxx另类| 5566日本婷婷色中文字幕97| 亚洲最大的黄色网| 亚洲中字在线| 日韩尤物视频| 免费黄色大片| 久久99久久精品欧美| 久久夜靖品2区| 在线观看亚洲精品视频| 青青草免费观看免费视频在线| 国产专区一区二区| 超碰97在线免费| 91亚洲人电影| 日本高清不卡在线观看| 97免费在线视频| 99视频精品免费| а√最新版在线天堂| 国产精品男女猛烈高潮激情| 丝袜在线视频| 成年网站在线看| 欧美日韩国产一区在线| 黄色av观看| 国产乱码久久久久| 蜜臀av色欲a片无码精品一区| 日欧美一区二区| 麻豆精品一区二区三区视频| 国产美女av一区二区三区| 欧美在线视频你懂得| 男女啪啪在线观看| 国产午夜精品理论片a级大结局| 欧美精品一区在线发布| 国产精品久线在线观看| 亚洲天堂一区二区三区| 午夜在线小视频| 中文字幕精品久久久| 五月天免费网站| 日韩视频国产视频| 杨幂一区二区国产精品| 精品电影在线观看| 成人激情在线观看| 韩日精品视频| 日本道不卡免费一区| 久久久久久久性| 日本大香伊一区二区三区| 精品亚洲一区二区三区在线播放|