ノートubuntuシステムJava開発シリアルプログラム

5095 ワード

ノートubuntuシステムJava開発シリアルプログラム
一、開発環境配置
ノートはシリアルがないので、buntuの下に仮想シリアルソフトウェアがありません。だから仮想マシンでuuntuシステムをインストールしたいです。私はVM ware 7.0を使っています。システムはuuntu 11.04です。もちろん、宿主システムはXP SP 3です。
以下の開発環境配置手順:
1、XPにVPD XP 5.1をインストールし、シリアルCOM 1とCOM 2のペアを追加します。
2、XPでシリアルデバッグアシスタントUart Asistを実行し、シリアルポートが正常に使用できるかをテストします。
3、XPの下で仮想マシンVM ware 7.0をインストールし、仮想マシンの下でuuntu 11.04をインストールし、インストールが完了したらシステムを閉じ、「仮想マシン設定の編集」をクリックし、次のステップで「追加」をクリックし、「シリアル」を選択し、「物理ポート」を選択し、「COM 1」を選択し、追加が完了したら確定する。
4、第2ステップでコミッションアシスタントがCOM 1に接続中の場合、COM 1の接続を切断します。(継続的に開くと、仮想マシンはCOM 1を使用できません。)XPの下でUart AsistでCOM 2に接続します。ボーレートは9600,8,1です。
5、仮想マシンを起動して、uuntuシステムに入ります。(もちろん、まずVM toolsとeclipseをインストールします。)UbuntuソフトウェアセンターでシリアルテストソフトCuteConを検索してインストールして、「アプリケーション」-「その他」の中で「CuteCon」を選択して、実行して、Openシリアルポート「キティS 0」(これはXPシステムのCOM 1ですが、2つの名前だけです。)波特率9600,8,1を設定し、シリアルポートを開く
6、CuteConにaaaaaaaaを入力して、返車して送ります。
7、XPに戻ると、Uart AsistがCOM 2を傍受している場合、Uart Asistでaaaaa aを受信する。
二、プログラミングテスト
私が使っているのはrxtxカバンです。eclipseで関連した構成が必要です。
1、プロジェクトを作成し、工程でlibのフォルダを作成し、RXTXcomm.jarとlibraxtSerial.so、libraxtxPalel.soをlibフォルダにコピーする。
2、プロジェクトを右クリックして、properties–build path->Libraryを選んで、この3つのファイルadd Jarsを  ,RXTXcomm.jar左側の下三角をクリックして、Native library locationを選んで、そのディレクトリをプロジェクトの中でlibのディレクトリに設定します。このステップは設定できないと、エラーが発生します。java.lang.Usatis fied LinkErrror:/usr/lib/jvm/java-6-sun-1.6.04/jre/lib/i 386:client/libxtxSerialalal. so:/usr/lib/lib/jvm/jvm/java-java-6-sun-susususususun-sususun-6 6 6 6 6/jjjclclclclclclclclcleeemmmmmmmmmmmmmmmmmmmb/jjjjjjjjjjjjjjjjjjjjjjjjjjjjthrown while loading)
3、クラスを作成します。ここで例をあげます。
package com.test; 

import gnu.io.CommPort; 
import gnu.io.CommPortIdentifier; 
import gnu.io.NoSuchPortException; 
import gnu.io.PortInUseException; 
import gnu.io.SerialPort; 
import gnu.io.SerialPortEvent; 
import gnu.io.SerialPortEventListener; 
import gnu.io.UnsupportedCommOperationException; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.util.Enumeration; 
import java.util.TooManyListenersException; 



public class SimpleRead2 implements SerialPortEventListener { //SerialPortEventListener    ,                    
static CommPortIdentifier portId; //        

static Enumeration portList;   //            

InputStream inputStream; //         

OutputStream outputStream;//        

SerialPort serialPort;     //      


public SimpleRead2() { 
try { 
portId = CommPortIdentifier.getPortIdentifier("/dev/ttyS0"); 
} catch (NoSuchPortException e1) { 
//       
e1.printStackTrace(); 
} 
   try { 
   serialPort = (SerialPort) portId.open("myapp", 2000);//       myapp,   2   
   } catch (PortInUseException e) { 
   //       
   } 
   try { 
    inputStream = serialPort.getInputStream(); 
    outputStream = serialPort.getOutputStream(); 
   } catch (IOException e) { 
   } 
   
   try { 
   serialPort.addEventListener(this);      //             
   } catch (TooManyListenersException e) { 
   } 
   
   serialPort.notifyOnDataAvailable(true); //        
   
   try { 
   serialPort.setSerialPortParams(2400, SerialPort.DATABITS_8,   //         
       SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); 
   } catch (UnsupportedCommOperationException e) { 
   } 
} 
public void serialEvent(SerialPortEvent event) {//SerialPortEventListener    ,           
   switch (event.getEventType()) { 
   case SerialPortEvent.BI: 
   case SerialPortEvent.OE: 
   case SerialPortEvent.FE: 
   case SerialPortEvent.PE: 
   case SerialPortEvent.CD: 
   case SerialPortEvent.CTS: 
   case SerialPortEvent.DSR: 
   case SerialPortEvent.RI: 
   case SerialPortEvent.OUTPUT_BUFFER_EMPTY: 
    break; 
   case SerialPortEvent.DATA_AVAILABLE://           ,          
    byte[] readBuffer = new byte[1000]; 

    try { 
    while (inputStream.available() > 0) { 
    int numBytes = inputStream.read(readBuffer); 
    } 
    System.out.println(new String(readBuffer)); 
    char[] a= {0x16,0x16,0x20,0x10,0x69,0x0,0x03,0x20,0x01,0x22}; 
    byte[] b = new String(a).getBytes(); 
outputStream.write(b); 
    } catch (IOException e) { } 
    break; 
   } 
} 

public static void main(String[] args) { 
SimpleRead2 reader = new SimpleRead2(); //     
} 
} 
このプログラムを実行して、XPでUart Asistが任意のデータを入力して送信すると、プログラムで結果が表示されます。
4、Ubuntuでシリアルポートの入出力をテストするには、仮想マシンに2つのシリアルCOM 1とCOM 2を追加する必要があります。そして、仮想マシンを開く前に、XPシステムに他のプログラム(例えばUart Asist)がこの2つの仮想ソケットを使っていないと、エラーが発生することを保証しなければなりません。
5、Ubuntuのeclipseで2つのプログラムを作成してテストプログラムに使用します。前の例のプログラムでキティS 0とキティS 1をそれぞれ開く必要があります。(それぞれXPのCOM 1とCOM 2に対応しています。)、二つのプログラムをコミッションしてシリアルの例を添付します。
201.6.15