2017-01-09 8 views
0

Modrssim (Modbus Simulator)을 Java 클래스와 통신하려고합니다. 나는 modsim에게 질의를 보내고있다. 그러나 응답을 읽으려고 할 때 나는 적절한 성격을 얻을 수 없습니다. 응답 내가 modsim 00 00 00 00 00 03 01 02 00를 얻고으로하트 수신, TCP/IP를 통한 Modsim의 미소

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

class client 
{ 
    public static void main(String args[]) throws IOException 
    { 
     Socket s=null; 
     BufferedReader b=null;  
     char data[] ={0,0,0,0,0,6,1,2,0,2,0,0}; 

     try 
     { 
      s=new Socket("199.199.51.7",502); 

      OutputStreamWriter writer = new OutputStreamWriter(s.getOutputStream()); 
      BufferedWriter bw = new BufferedWriter(writer); 
      System.out.println("Sending Data...."); 
      bw.write(data);  
      bw.flush(); 

      b=new BufferedReader(new InputStreamReader(s.getInputStream())); 

     } 

     catch(UnknownHostException u) 
     { 
      System.err.println("I don't know host"); 
      System.exit(0); 
     } 

     String inp; 
     System.out.println("Receiving......"); 
     while((inp=b.readLine())!=null) 

     { 

      System.out.println(inp); 
      System.out.println("dONE"); 
     } 
     b.close(); 
     s.close(); 
    } 
} 

:

여기 내 코드입니다. MOdsim에서 응답의 이미지는 여기에 있습니다 :

enter image description here

그러나 그것을 읽는 동안, 그것은 마음과 두 개의 웃음을 보여줍니다. 데이터 수신 :

enter image description here

답변

0

당신의 문제는 간단하다 : 당신은 그냥 옳은 일을 단지 것) 바이트의 모든 종류를 받고 (에서 System.out.println로 전송한다고 가정 할 수 없다.

바이트문자 또는 문자열이 아닙니다. 바이너리 값입니다. 그것들은 "쉽게"인쇄 될 수 없습니다.

시도해 볼 수있는 한 가지 방법 : 바이트를 16 진수로 인쇄하십시오. 그 주위의 아이디어는 here을 참조하십시오.