无法在没有关闭端口的情况下使用jssc在串行端口上发送数据?

时间:2016-01-20 21:56:30

标签: java serial-port xbee jssc

我尝试使用jssc库将数据发送到带有Java串口的Xbee天线。

我希望能够在同一个连接上发送和接收多个数据包。

我遇到的问题是我的代码只在关闭端口后才发送第一个数据包,或者我结束程序。

我的代码基于以下链接的教程: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正在与之交谈的其他设备的波特率。

修改

当我将Xbee连接到FT232的UART(http://www.seeedstudio.com/depot/UartSBee-V5-p-1752.html)时,会出现这种情况。

当我将RS-232直接连接到XBee时,会立即发送传输。

2 个答案:

答案 0 :(得分:0)

在关闭/退出之前,等待字节出来多长时间?您可能需要进入FTDI驱动程序属性并更新打包和延迟的设置。在通过USB连接将其发送到FT232之前,它可能正在等待PC上驱动程序中的更多数据。

如果您的程序等待几秒钟,您会发现该消息最终会消失而无需关闭串口或退出程序(也会关闭串口)。

答案 1 :(得分:0)

将数据写入串口后,尝试将其从串口中清除,以便实际将其从串口发送出去。还要考虑串行端口通信的其他串口库,如串行通信管理器等。