2016-01-20 11 views
0

Я пытаюсь отправить данные на антенну Xbee с последовательным портом на Java, используя библиотеку jssc.Не удается отправить данные на последовательный порт с помощью jssc без закрывающего порта?

Я хочу иметь возможность отправлять и принимать несколько пакетов данных в одном и том же соединении.

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

я на основе моего кода на учебник по этой ссылке: http://www.codeproject.com/Tips/801262/Sending-and-receiving-strings-from-COM-port-via-jS

Вот мой код:

serialPort = new SerialPort("COM4"); 
    try { 
     // opening port 
     serialPort.openPort(); 

     serialPort.setParams(SerialPort.BAUDRATE_38400, 
          SerialPort.DATABITS_8, 
          SerialPort.STOPBITS_1, 
          SerialPort.PARITY_NONE); 

     serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | 
             SerialPort.FLOWCONTROL_RTSCTS_OUT); 

     serialPort.addEventListener(new PortReader(), SerialPort.MASK_RXCHAR); 

     byte[] fifo = new byte[13]; 
     fifo[0] = 0x7E; 
     fifo[1] = 0x00; 
     fifo[2] = 0x09; 
     fifo[3] = 0x01; 
     fifo[4] = 0x01; 
     fifo[5] = 0x00; 
     fifo[6] = 0x01; 
     fifo[7] = 0x00; 
     fifo[8] = 0x54; 
     fifo[9] = 0x65; 
     fifo[10] = 0x73; 
     fifo[11] = 0x74; 
     fifo[12] = 0x5C; 
     result = serialPort.writeBytes(fifo); 

Событие для приема данных работает, моя единственная проблема заключается в отправке. Я уже проверил скорость передачи в бодах другого устройства, с которым разговаривает Xbee.

EDIT

Когда я подключить XBee к FT232 в UART (http://www.seeedstudio.com/depot/UartSBee-V5-p-1752.html), возникает такая ситуация.

Когда я подключаю напрямую RS-232 к XBee, передача отправляется немедленно.

ответ

0

Как долго вы ждали появления байтов перед тем, как закрыть/закрыть? Возможно, вам придется зайти в свойства драйвера FTDI и обновить параметры пакетирования и задержки. Вероятно, вы ожидаете большего количества данных в драйвере на вашем ПК, прежде чем отправлять его по USB-соединению на FT232.

Если у вас есть программа, подождите несколько секунд, вы должны обнаружить, что сообщение, в конце концов, выходит, не закрывая последовательный порт или не выходить из программы (что также закрывает последовательный порт).

+0

Спасибо за ваш ответ! Я подождал почти минуту, прежде чем закрыть порт. Я проверю это. – Flyingmath

0

После записи данных в последовательный порт попытайтесь вывести его из последовательного порта, чтобы он фактически отправлялся из последовательного порта. Также рассмотрите другие библиотеки последовательного порта для связи по последовательному порту, например, диспетчер последовательной связи и т. Д.