2013-11-13 17 views
1

Я разрабатываю приложение Java, которое необходимо обмениваться данными с терминалом, связанным с конвертером usb-to-rs232!Получение данных с терминала, связанного с USB-> RS232

Прямо сейчас я могу подключиться к устройству и отправить данные! Я могу быть уверен, что терминал получит данные, отправленные, потому что светодиод светится, когда терминал что-то получает!

Я использую JSSC (Ссылка: https://code.google.com/p/java-simple-serial-connector/wiki/jSSC_examples) ... но по какой-то причине я никогда не получаю никаких данных от терминала.

Мой код (JSSC код):

public class Main 
{ 

    static SerialPort serialPort; 

    public static void main(String[] args) throws InterruptedException 
    { 
     serialPort = new SerialPort("COM7"); 
     try 
     { 
      serialPort.openPort();//Open port 
      serialPort.setParams(9600, 8, 1, 0);//Set params 
      int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;//Prepare mask 
      serialPort.setEventsMask(mask);//Set mask 
      serialPort.addEventListener(new SerialPortReader());//Add SerialPortEventListener 

      serialPort.writeByte((byte)0x02); 

      TimeUnit.SECONDS.sleep(10); 

      byte[] b = serialPort.readBytes(); 
      System.out.println("bytes " + b); 
     } 
     catch (SerialPortException ex) 
     { 
      System.out.println(ex); 
     } 
} 

/* 
* In this class must implement the method serialEvent, through it we learn about 
* events that happened to our port. But we will not report on all events but only 
* those that we put in the mask. In this case the arrival of the data and change the 
* status lines CTS and DSR 
*/ 
static class SerialPortReader implements SerialPortEventListener 
{ 
    public void serialEvent(SerialPortEvent event) 
    { 
     System.out.println("Event raised!"); 
     if(event.isRXCHAR()) 
     {//If data is available 
       if(event.getEventValue() == 10) 
       {//Check bytes count in the input buffer 
       //Read data, if 10 bytes available 
        try 
        { 
         byte buffer[] = serialPort.readBytes(10); 
        } 
        catch (SerialPortException ex) 
        { 
         System.out.println(ex); 
        } 
       } 
     } 
     else if(event.isCTS()) 
     {//If CTS line has changed state 
       if(event.getEventValue() == 1) 
       {//If line is ON 
        System.out.println("CTS - ON"); 
       } 
       else 
       { 
        System.out.println("CTS - OFF"); 
       } 
     } 
     else if(event.isDSR()) 
     {///If DSR line has changed state 
       if(event.getEventValue() == 1) 
       {//If line is ON 
        System.out.println("DSR - ON"); 
       } 
       else 
       { 
        System.out.println("DSR - OFF"); 
       } 
     } 
    } 
} 
} 

Может кто-нибудь помочь мне с этим вопросом?

ответ

0

Вы намерены использовать аппаратное управление потоком через USB-UART. Если да, попробуйте установить DTR, а затем RTS. Это говорит о том, что 2-й конец готов к общению. Кроме того, 10 байтов не принимаются или вообще не принимаются данные. Также рассмотрите другую библиотеку связи последовательного порта, такую ​​как scm http://www.embeddedunveiled.com/

 Смежные вопросы

  • Нет связанных вопросов^_^