2

javaでTCPプロジェクトを作成しています。 私は、マイクロコントローラからのシリアル通信でjavaでTCP接続を構築したいと考えています。 マルチスレッドでそれをやりたい"java.lang.UnsupportedOperationException:まだサポートされていません。"

私は自分のサーバーとクライアントを実行し、クライアントからサーバーにメッセージを送信します。それから私はtcpserverの中に次のエラーがあります。ここでは

"Exception in thread "Thread-0" java.lang.UnsupportedOperationException: Not supported yet. 
    at serialPort.openPort(serialPort.java:30) 
    at Client.run(TCPserver.java:63)" 

は私TCPservercodeです:

import java.io.*; 
import java.net.*; 
import java.io.IOException; 
import jssc.SerialPort; 
import jssc.SerialPortException; 
import java.util.Scanner; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import jssc.SerialPortList; 
import jssc.*; 
import jssc.SerialPort; 
import jssc.SerialPortException; 

class TCPServer 
{ 
    public static void main(String argv[]) throws Exception 
    { 
     ServerSocket welcomeSocket = new ServerSocket(6789); 
     SerialPort serialPort = new SerialPort("COM3"); 

     while(true) 
     { 
      Socket connectionSocket = welcomeSocket.accept(); 
      if (connectionSocket != null) 
      { 
       Client client = new Client(connectionSocket); 
       client.start(); 
      } 
     } 
    } 
} 

class Client extends Thread 
{ 
    private Socket connectionSocket; 
    private String clientSentence; 
    private String capitalizedSentence; 
    private BufferedReader inFromClient; 
    private DataOutputStream outToClient; 

    public Client(Socket c) throws IOException 
    { 
     connectionSocket = c; 
    } 

    public void run() 
    { 
     try 
     {  
      inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 
      outToClient = new DataOutputStream(connectionSocket.getOutputStream()); 
      clientSentence = inFromClient.readLine(); 
      capitalizedSentence = clientSentence.toUpperCase() + '\n'; 
      outToClient.writeBytes(capitalizedSentence); 
      serialPort.openPort();//Open serial port 

      serialPort.setParams(SerialPort.BAUDRATE_115200, 
          SerialPort.DATABITS_8, 
          SerialPort.STOPBITS_1, 
          SerialPort.PARITY_NONE); 
      System.out.println("Received: " + clientSentence); 
      serialPort.writeString(clientSentence + "\r\n"); 
      //Thread.sleep(1000); 
      String buffer = serialPort.readString();//Read 10 bytes from seri 
      // Thread.sleep(1000); 

      outToClient.writeBytes(buffer); 
      System.out.println(buffer); 
      serialPort.closePort(); 
      connectionSocket.close(); 

     } catch (IOException ex) { 
      Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 

} 

と私れるtcpClientコード:

import java.io.*; 
import java.net.*; 

class TCPClient 
{ 
    public static void main(String argv[]) throws Exception 
    { 
     while(true){ 
     String sentence;    
     String modifiedSentence;  

     Socket clientSocket = new Socket("localhost", 6789); 

     BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
     DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());   
     BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

     sentence = inFromUser.readLine(); 
     outToServer.writeBytes(sentence + '\n'); 
     modifiedSentence = inFromServer.readLine(); 
     System.out.println("FROM SERVER: " + modifiedSentence); 

     clientSocket.close(); 
     } 
    } 
} 

私の元のシリアル通信コード:

package sensornode_Jens; 

import java.io.IOException; 
import jssc.SerialPort; 
import jssc.SerialPortException; 
import java.util.Scanner; 
import jssc.SerialPortList; 
import jssc.*; 
import jssc.SerialPort; import jssc.SerialPortException; 


public class Main { 

public static void main(String[] args) { 

    // getting serial ports list into the array 
String[] portNames = SerialPortList.getPortNames(); 

if (portNames.length == 0) { 
    System.out.println("There are no serial-ports :(You can use an emulator, such ad VSPE, to create a virtual serial port."); 
    System.out.println("Press Enter to exit..."); 
    try { 
     System.in.read(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
    return; 
} 

for (int i = 0; i < portNames.length; i++){ 
    System.out.println(portNames[i]); 
    //// 

    SerialPort serialPort = new SerialPort("/dev/ttyACM0"); 
    try { 
     serialPort.openPort();//Open serial port 
     serialPort.setParams(SerialPort.BAUDRATE_115200, 
          SerialPort.DATABITS_8, 
          SerialPort.STOPBITS_1, 
          SerialPort.PARITY_NONE);//Set params. Also you can set params by this string: serialPort.setParams(9600, 8, 1, 0); 
     Scanner input = new Scanner(System.in); 
     String scommand = input.nextLine(); 

     serialPort.writeString(scommand + "\r\n"); 

     String buffer = serialPort.readString();//Read 10 bytes from serial port 

     System.out.println(buffer); 

     serialPort.closePort(); 

    } 
    catch (SerialPortException ex) { 
     System.out.println(ex); 
    } 
} 
} 
} 

Canbo dyは私を助ける?

+2

'jssc.SerialPort'インポートに関する情報を提供してください。それはどこから来ますか:どのライブラリとバージョン? –

+0

私はjsscライブラリを使用しています。最新のバージョン – belmen

+0

"serialPort.java"というファイルのコードを表示できますか?私はこれがあなたが書いたクラスだと思いますか? –

答えて

0

にJSSCのためのGoogle Codeのページから探している相手:彼らが使用例を検討するとhttps://code.google.com/archive/p/java-simple-serial-connector/


私はTCPServerのクラスに設定されなくClientクラスでどこ

参照

SerialPort serialPort = new SerialPort("COM1"); 

serialPort.openPort(); 

が呼び出されます。

したがって、openPortを呼び出す前に、TCPServerクラスではなくClientクラス内でserialPortを初期化する必要があります。

UnsupportedOperationExceptionをスローするopenPortメソッドへの参照が見つかりませんでした。

+0

私はそれがクライアントではないと思う..エラー..しかし、私のクライアントはそれがshoud ..のように働くので、tcpserver側で私はこのリンクからのtcpserverコードを使用する - > http://ndm.wikidot。 com/cnsoltcpmultithreading、私はcliendのための同じコードを使用してエラーはありません..しかし、私は私のシリアルポートと私はそれを私はエラーを取得togheter – belmen

関連する問題