私はサーブレットが初めてで、助けが必要です。コマンドを送信し、jsp ページとライブラリ JSSC を使用したサーブレットを介してデータを受信するための小さなアプリケーションを開発しています。jsp は、コマンド (TX) を送信するためのテキストボックスを示し、同じ jsp には (RX) データを表示するためのテキストエリアがあります。doGet メソッドには、コマンドを RS232 に送信するコードがありますが、外部デバイスから応答を受け取るには、クラス SerialPortReader を使用して、jssc Web ページの例に従ってポートをリッスンします。
私の問題は、SerialPortReader を使用して受信データを jsp ページのテキスト領域に表示する方法がわからないことです。同じ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");
}
}
}
}