/* * DS2890Servlet.java * * Created on 20 November 2001, 21:11 * * Copyright 2001 Chris Bryden. Redistribute Freely. * * c.bryden@virgin.net * */ import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import com.dalsemi.onewire.OneWireAccessProvider; import com.dalsemi.onewire.*; import com.dalsemi.onewire.adapter.*; import com.dalsemi.onewire.container.*; import com.dalsemi.onewire.container.OneWireContainer2C; /** * * @author cjb * @version */ public class DS2890Servlet extends HttpServlet { /** Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); } /** Destroys the servlet. */ public void destroy() { } private OneWireContainer2C[] getDevices() throws OneWireException { DSPortAdapter pa = null; pa = OneWireAccessProvider.getDefaultAdapter(); //target family DS2890 pa.targetFamily(0x2C); Enumeration e = pa.getAllDeviceContainers(); Vector v = new Vector(); int i = 0; while( e.hasMoreElements()) { v.addElement((OneWireContainer2C) e.nextElement()); } OneWireContainer2C[] devices = new OneWireContainer2C[v.size()]; v.copyInto(devices); return(devices); } private void drawDocument(PrintWriter out) { OneWireContainer2C[] devices = new OneWireContainer2C[0]; try { devices = getDevices(); } catch(OneWireException e) { out.write("

One Wire Exception
"); e.printStackTrace(out); out.write(""); return; } out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n"); out.write("DS2890 Servlet\r\n\r\n"); out.write("\r\n\r\n"); out.write("\r\n"); out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n

"); out.write("DS2890 Servlet

"); out.write("\r\n"); out.write("

\r\n" + (new OneWireContainer2C()).getDescription()); out.write("\r\n
"); out.write("\r\n"); out.write("\r\n"); out.write("\r\n\r\n"); out.write("\r\n


\r\n"); out.write("\r\n"); for(int i=0;i\r\n"); } catch(OneWireException e) { out.write("One Wire Exception:" + e.getMessage()); } } out.write("\r\n
\r\n"); out.write("
Device\r\nData
\r\n"); out.write("\r\n"); byte[] state = new byte[0]; try { state = devices[i].readDevice(); out.write(devices[i].getName() + "@" + devices[i].getAddressAsString()); int wipers = devices[i].numberOfPotentiometers(state); out.write("\r\n"); out.write("\r\n"); for(int wiper=0;wiper position:"); out.write(""); out.write("\r\n(" + (devices[i].potentiometerResistance(state) - (position * ((float)devices[i].potentiometerResistance(state)/(float)(devices[i].numberOfWiperSettings(state)-1)))) + "K)\r\n  "); out.write("\r\n"); out.write("
\r\n"); } out.write("
\r\n"); out.write("
"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=ISO-8859-1"); drawDocument(response.getWriter()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { OneWireContainer2C[] devices = new OneWireContainer2C[0]; try { devices = getDevices(); } catch(OneWireException e) { response.getWriter().write("

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } String address = request.getParameter("address"); int wiper = Integer.parseInt(request.getParameter("wiper")); int pos = Integer.parseInt(request.getParameter("state")); for(int i=0;i devices[i].numberOfWiperSettings(state)-1) { pos = devices[i].numberOfWiperSettings(state)-1; } devices[i].setWiperPosition(pos); } catch(OneWireException e) { response.getWriter().write("

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } break; } } response.setContentType("text/html;charset=ISO-8859-1"); drawDocument(response.getWriter()); } /** Returns a short description of the servlet. */ public String getServletInfo() { return "DS2890 One-Wire digital potentiometer servlet"; } }