- 浏览: 37746 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
linruibo001:
地方
flex4文件上传+视频播放(简单案例) -
rinniclyks:
谢谢分享,这个对我来说很用,下午我试试看
网页上Applet用javacomm20读取客户端串口 -
mlc19860417:
下来看看
spring线程发送邮件 -
jeff712:
东西不错,
Struts2中POI在内存中生成Excel文件并下载 -
Samter:
好东西,谢谢了!
Struts2中POI在内存中生成Excel文件并下载
public class SerialHandleBean implements SerialPortEventListener { CommPortIdentifier portId; SerialPort serialPort; private OutputStream out; private InputStream in; String Buf=null;// 缓存一条最新信息 boolean hasData=false;// 标志有无新数据 Thread readThread; static { System.setSecurityManager(null); } private static SerialHandleBean serialBean=new SerialHandleBean(); private SerialHandleBean() { } public static SerialHandleBean getInstance(){ if (serialBean==null) { return new SerialHandleBean(); }else{ return serialBean; } } public int initialize(String portName, int baud) { int InitSuccess = 1; int InitFail = -1; try { portId = CommPortIdentifier.getPortIdentifier(portName); serialPort = (SerialPort) portId.open(portId.getName(), 1000); serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); serialPort .notifyOnBreakInterrupt(true); in = serialPort.getInputStream(); out = serialPort.getOutputStream(); serialPort.setSerialPortParams(baud, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (PortInUseException e) { System.out.println("端口已经被占用!"); e.printStackTrace(); return InitFail; } catch (TooManyListenersException e) { System.out.println("端口监听者过多!"); e.printStackTrace(); return InitFail; } catch (UnsupportedCommOperationException e) { System.out.println("端口操作命令不支持!"); e.printStackTrace(); return InitFail; } catch (NoSuchPortException e) { System.out.println("端口不存在!"); e.printStackTrace(); return InitFail; } catch (IOException e) { e.printStackTrace(); } return InitSuccess; } public boolean hasData() { return hasData; } public String ReadPort() { if(hasData) { this.hasData=false; return this.Buf; } else return null; } public void writeln(String command) throws Exception { out.write(hexStringToBytes(command)); out.flush(); } public byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return d; } /** * Convert char to byte * @param c char * @return byte */ private byte charToByte(char c) { return (byte) "0123456789ABCDEF".indexOf(c); } //打印 public static void printHexString( byte[] b) { for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } System.out.print(hex.toUpperCase() ); } } public void ClosePort() { if(readThread!=null ) try { readThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(serialPort!=null) serialPort.close(); } public String readResult() { String buf=null; try { while(in.available()>0) { buf=Integer.toHexString(in.read()); } return buf; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return buf; } public void serialEvent(SerialPortEvent event) { /** * 事件类型: * * BI -通讯中断. CD -载波检测. CTS -清除发送. DATA_AVAILABLE -有数据到达. * DSR-数据设备准备好. FE -帧错误. OE -溢位错误. OUTPUT_BUFFER_EMPTY * -输出缓冲区已清空. PE -奇偶校验错. RI - 振铃指示. */ switch(event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: break; } } public OutputStream getOut() { return out; } public void setOut(OutputStream out) { this.out = out; } public InputStream getIn() { return in; } public void setIn(InputStream in) { this.in = in; } //调试用 /*public static void main(String[] args) throws Exception { int i=0; SerialHandleBean serialBean=SerialHandleBean.getInstance(); if (serialBean.initialize("COM1",38400)==1) { serialBean.writeln("aa");//22.548272,113.936916 while(true){ String result=serialBean.readResult(); if (result!=null) { result=result.toUpperCase(); if (result.equals("FF")) { System.out.println("successed!"); serialBean.ClosePort(); break; }else if(result.equals("F0")){ System.out.println("failed!"); serialBean.ClosePort(); break; } }else{ if (i==10) { serialBean.ClosePort(); break; } Thread.sleep(1000); System.out.println("等待返回数据... "+i+" s"); i++; } } }else{ System.out.println("初始化失败!"); } }*/ }
public class ListenApplet extends Applet { private static final long serialVersionUID = 4886560884272088075L; private SerialHandleBean serialBean; private String info; @Override public void init() { this.serialBean =SerialHandleBean.getInstance(); if (serialBean.initialize("COM1",38400)==1) { info="Y"; }else{ info="N"; } } public void paint(Graphics g){ } public String writeSerial(String command){ int i=0; String handleResult=""; try { if (info.equals("Y")) { serialBean.writeln(command); while (true) {//114022936 25364861 String result=serialBean.readResult(); if (result!=null) { result=result.toUpperCase(); if (result.equals("FF")) { handleResult="Y"; System.out.println("successed!"); serialBean.writeln("55"); break; }else if(result.equals("F0")){ handleResult="F"; serialBean.writeln("55"); System.out.println("failed!"); break; } }else{ if (i==10) { System.out.println("无法解码!解除状态!"); serialBean.writeln("55"); handleResult="S"; break; } Thread.sleep(1000); i++; System.out.println("listening... "+i+" s"); } } return handleResult; }else if(info.equals("N")){ serialBean.ClosePort(); init(); System.out.println("未启动"); return "N"; }else{ serialBean.ClosePort(); init(); System.out.println("info is null!"); return "N"; } } catch (Exception e) { e.printStackTrace(); } return "N"; } public String readSerial(){ try { String result=serialBean.readResult(); System.out.println(result); return result; } catch (Exception e) { e.printStackTrace(); } return "N"; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public SerialHandleBean getSerialBean() { return serialBean; } public void setSerialBean(SerialHandleBean serialBean) { this.serialBean = serialBean; } }
客户端浏览器需要jre环境
生成证书及签名
请在命令行环境下执行以下的命令:
1、keytool -genkey -keystore command.store -alias command
2、keytool -export -keystore command.store -alias command-file command.cert
3、jarsigner -keystore command.store applet.jar command
修改${java.home}/jre/lib/security目录下的java.security,在下面添写第三行
policy.url.3=file:c: /admin/applet.policy
以上很初略的代码。
- java串口用到.rar (31.5 KB)
- 下载次数: 4
发表评论
-
RSA
2014-07-29 15:35 515package com.client.rsa;import ... -
消息拆包
2014-05-13 18:37 6877E.....7E public static List& ... -
java httpclient
2013-08-06 18:56 981package com.zhonghong.tsp.util; ... -
消息构造器
2012-09-20 15:03 585public class MessageArrayBuilde ... -
TypeChangeUtil
2012-09-20 14:59 864public class TypeChangeUtil { ... -
log4j.properties 使用
2012-09-20 14:26 575log4j.properties 使用 一. ... -
javaee 限制登录
2011-11-26 11:19 841public class LoginSessionListen ... -
java(加密与解密)
2011-02-22 17:05 825java(加密与解密) PBE——Password-base ... -
给图片加水印
2010-09-20 10:34 732// 将 s 进行 BASE64 编码 public stat ... -
lucene3.0
2010-09-18 14:01 654lucene3.0 -
JAVA葵花宝典
2009-09-15 16:55 1213JAVA葵花宝典
相关推荐
Applet是一种可嵌入到网页中的小型Java应用程序,能够在客户端浏览器中运行。这种特性使得Applet非常适合于读取客户端本地资源,如串口数据,而无需安装额外的软件。 #### 二、准备工作与环境搭建 在开始编写Applet...
Java Applet串口通信允许Applet与本地计算机的硬件设备进行交互,如通过串行端口与RFID读卡器建立连接,从而读取或写入RFID标签的信息。 RFID技术是一种无线通信技术,它通过无线电频率信号识别特定目标并读写相关...
在本篇文章中,作者李佳宁和陈旭详细探讨了如何使用comm.jar开发包实现Java与单片机之间的全双工串口通信。全双工串口通信指的是可以在两个方向上同时传输数据,既可发送也可接收数据,这在实时性要求较高的应用中尤...
需要注意的是,在网络应用程序中使用串口API时可能会遇到更复杂的配置问题,例如Applet在网页上使用javacomm20读取客户端串口的情况,这些问题需要额外的研究和调试。 #### 2. 串口API概览 ##### 2.1 javax.comm....
在实际应用中,可能会遇到跨平台兼容性问题,尤其是在Web应用程序或Applet中使用Java串口API时。解决这类问题通常需要深入了解操作系统和Java虚拟机的交互,以及对网络通信的理解。 总的来说,Java串口通信涉及的...
在Java中,通过Java Communications API(Java Comm API)或第三方库如RXTX,我们可以实现对串口的操作。 1. **Java Communications API**:这是Java标准版(Java SE)的一部分,提供了一组接口和类来支持串口通信...
以下将详细讲解“win32comm.dll”,“comm.jar”以及“javax.comm.properties”这三个关键元素,并介绍如何在Java Applet中使用它们来实现串口通信。 首先,"win32comm.dll"是Windows操作系统下的一个动态链接库...
Java串口通信是Java编程中实现设备间物理串行接口通信的一种技术。它在嵌入式系统、传感器网络以及PC与嵌入式设备交互等场景中广泛应用,特别是通过RS-232-C标准进行全双工通信。RS-232-C是一种广泛采用的串行通信...
在某些情况下,可能需要使用IBM提供的`ibm-javacomm`包以获得更好的兼容性和性能。 在Java中实现串口通信时,通常会涉及到以下几个关键概念和步骤: 1. **获取串口标识符**: `CommPortIdentifier....