我正在尝试使用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时,传输会立即发送。
在关闭/退出之前,您要等待字节发出多长时间? 您可能需要进入 FTDI 驱动程序属性并更新数据包化和延迟的设置。 在通过USB连接将其发送到FT232之前,可能会在PC上的驱动程序中等待更多数据。
如果你让你的程序等待几秒钟,你应该发现消息最终会发出,而不需要关闭串行端口或退出程序(也会关闭串行端口)。
写入串行端口后,尝试将其从串行端口中清除,以便它实际上从串行端口发送出去。还可以考虑用于串行端口通信的其他串行端口库,例如串行通信管理器等。