Quiero hacer un envio por el puerto serial de un servidor (que yo mismo he configurado) desde un cliente web ubicado en cualquier parte del mundo, bueno lo que he hecho hasta los momentos y pense que me funcionaria es los siguiente:
Formulario de peticion html: Un simple formulario que envia 6 datos control.html
Código:
Servlet de recepcion de datos y envio serial: Main.java, Main.classh1>Datos</h1> <form action = "controlserial" method = "post"> Motor 1: <input type="text" name="motor1"> <br> Motor 2 <input type="text" name="motor2"> <br> Motor 3 <input type="text" name="motor3"> <br> Motor 4 <input type="text" name="motor4"> <br> Motor 5 <input type="text" name="motor5"> <br> Motor 6 <input type="text" name="motor6"> <br> <input type="submit" value="Enviar"> </form>
Código:
Archivo web.xml del servlet: El que haya trabajado con servlets sabra que se necesitaimport javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import javax.comm.*; public class Main extends HttpServlet { * *static Enumeration portList; * *static CommPortIdentifier portId; * *static String messageString; * *static SerialPort serialPort; * *static OutputStream outputStream; * *protected void doPost(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException * *{ * * * *String motor1 = peticion.getParameter("motor1"); * * * *String motor2 = peticion.getParameter("motor2"); * * * *String motor3 = peticion.getParameter("motor3"); * * * *String motor4 = peticion.getParameter("motor4"); * * * *String motor5 = peticion.getParameter("motor5"); * * * *String motor6 = peticion.getParameter("motor6"); * * * *messageString = motor1+motor2+motor3+motor4+motor5+motor6; * * * * portList = CommPortIdentifier.getPortIdentifiers(); * * * *while (portList.hasMoreElements()) { * * * * * *portId = (CommPortIdentifier) portList.nextElement(); * * * * * *if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { * * * * * * * *if (portId.getName().equals("COM1")) { * * * * * * * *// if (portId.getName().equals("/dev/term/a")) { * * * * * * * * * *try { * * * * * * * * * * * *serialPort = (SerialPort) * * * * * * * * * * * * * *portId.open("SimpleWriteApp", 2000); * * * * * * * * * *} catch (PortInUseException e) {} * * * * * * * * * *try { * * * * * * * * * * * *outputStream = serialPort.getOutputStream(); * * * * * * * * * *} catch (IOException e) {} * * * * * * * * * *try { * * * * * * * * * * * *serialPort.setSerialPortParams(9600, * * * * * * * * * * * * * *SerialPort.DATABITS_8, * * * * * * * * * * * * * *SerialPort.STOPBITS_1, * * * * * * * * * * * * * *SerialPort.PARITY_NONE); * * * * * * * * * *} catch (UnsupportedCommOperationException e) {} * * * * * * * * * *try { * * * * * * * * * * * *outputStream.write(messageString.getBytes()); * * * * * * * * * *} catch (IOException e) {} * * * * * * * *} * * * * * *} * * * *} * *} }
Código:
Bueno eso es lo que tengo, y estan localizados en las direcciones (local de mi pc):<!DOCTYPE web-app PUBLIC> <web-app> <-- Descripcion General de la Aplicacion Web --> <display-name> Servlets y JSPs </display-name> <description> Esta es la aplicacion web donde se ejecutan todos los servlets y los JSPs </description> <-- Definiciones de Servlets --> <servlet> <servlet-name> controlserial </servlet-name> <description> Servlet que maneja el Puerto Serial </description> <servlet-class> Main </servlet-class> </servlet> <-- Asociaciones de Servlets --> <servlet-mapping> <servlet-name> controlserial </servlet-name> <url-pattern> /controlserial </url-pattern> </servlet-mapping> </web-app>
localhost/control/servlets/control.html
localhost/control/WEB-INF/web.xml
localhost/control/WEB-INF/classes/Main.class
Ahora la cosa es que cuando envio el formulario con los datos, pues no pasa nada, me da un error de que no se pudo encontrar la pagina y todo eso, alguna ayuda??
Una pregunta que me tiene pensativo, un servlet si o si debe mandar una respuesta al cliente?? Porque yo no quiero que al enviar el formulario la pagina cambie y me cargue otra distinta, es decir, yo quiero que esa pagina del formulario siempre sea la misma, debido a que en ella tendre tambien la visualizacion de la camara web que SIEMPRE debe estar visible en todo momento sin ninguna interrupcion...
Bueno espero sus respuestas, saludos...