0

我是 servlet 的新手,我需要一些帮助。我开发了一个小型应用程序,通过一个 jsp 页面和一个带有库 JSSC 的 servlet 发送命令和接收数据。该 jsp 显示一个文本框来提交命令 (TX),并且在同一个 jsp 中有一个文本区域来显示 (RX) 数据。根据jssc 网页的示例,在 doGet 方法中,我有将命令发送到 RS232 的代码,但是为了从外部设备接收答案,我使用 SerialPortReader 类来监听端口。

我的问题是我不知道如何使用 SerialPortReader 将接收数据显示到 jsp 页面的 textarea 中。我想在同一个 jsp 中显示 RX 数据。我知道使用“request.getRequestDispatcher ...”使其进入doGet方法,但我不知道如何使用SerialPortReader来做到这一点。

小服务程序代码:

public void init(ServletConfig config) throws ServletException 
{
    serialPort = new SerialPort("COM7");
    try {

            System.out.println("port open :" + serialPort.openPort());//Open port
            serialPort.setParams(SerialPort.BAUDRATE_9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);

            int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;//Prepare mask
            serialPort.setEventsMask(mask);//Set mask
            serialPort.addEventListener(new SerialPortReader());//Add SerialPortEventListener

    }
    catch (SerialPortException ex)
    {
        System.out.println(ex);
    }
}

protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    try
    {

        String tb = request.getParameter("comand");
        out.println("textbox=" + tb);
        serialPort.writeString(tb +"\r");//Write data to port

    } catch (SerialPortException ex) {
        System.out.println(ex);
    }
  }

static class SerialPortReader implements SerialPortEventListener {

     public void serialEvent(SerialPortEvent event) {

        if (event.isRXCHAR()) {//If data is available

                try {

                    String buffer = serialPort.readString();
                    System.out.print(buffer);

                } 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");
            }
        }

    }
}
4

0 回答 0