Java Applet技术应该算是Java语言诞生之初在Web领域唯一的一个卖点,有一段时间非常流行Applet做的动画,聊天室和游戏。但是由于Applet自身存在的一些问题,比如要求浏览器装有JRE,很多用户不愿意去装;开发困难,没有好的IDE,性能差等;导致Applet慢慢地被Java在服务器端的优秀表现所淹没。
Java串口编程使用的是javax.comm包下的SerialPortEventListener接口。javax.comm是当年Sun公司提供的(现在已经属于Oracle公司)用于开发平台独立的通讯应用程序的扩展API。
废话不多说了,直接进入主题,先说说怎么开发一个Applet的Hello World程序。
1. Applet Hello World
首先介绍下在Eclipse环境下如何编写一个Applet程序。
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorld extends Applet {
@Override
public void init() {
System.out.println("init...");
}
@Override
public void start() {
System.out.println("start...");
}
@Override
public void stop() {
System.out.println("stop...");
}
@Override
public void destroy() {
System.out.println("destroy...");
}
public void paint(Graphics g) {
g.drawString("Hello World!", 5, 35);
}
}
任何一个Applet程序须继承java.applet.Applet类。在Eclipse运行上面代码的时候(Run as Java Applet),会发现代码运行的顺序与Servlet类似(准确地说,应该是Servlet与Applet类似,因为先有Applet),控制台依次输出“init… start…”,然后弹出Applet绘制的一个小窗口,如下图:
当关闭Applet的时候,控制台依次输出“stop… destroy…”。
下面介绍下如何将这个最简单的Applet嵌入到HTML页面里。
在普通的HTML页面中添加<applet>标签,然后指定code属性为刚刚编写的Applet的.class文件全路径(有包名的话需要指定包路径)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>HelloWorld.html</title>
</head>
<body>
<applet code="HelloWorld.class" width="200" height="100"> </applet>
</body>
</html>
将上面编写的HelloWorld.java和HelloWorld.html文件复制到JDK\bin目录下,打开命令行窗口,也切换到这个目录下,执行以下两个命令,会发现这个弹出Hello World窗口,说明Applet已经在HTML里面正常执行。
...\jdk1.7.0_13\bin>javac HelloWorld.java
...\jdk1.7.0_13\bin>appletviewer HelloWorld.html
2.使用SerialPortEventListener实现读取串口中数据的功能:
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.Enumeration;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import javax.comm.CommDriver;
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.swing.JApplet;
/**
* 电子称Applet
*
* @author songkaojun 2015-11-18
*
*/
public class ScaleApplet extends JApplet {
private static final long serialVersionUID = -5163984585837742255L;
private String driverName = "com.sun.comm.Win32Driver";
// 目前支持常用的十个端口
private static final String[] PORT_NAMES = new String[] { "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9" };
// 电子称数据前缀
private static final String SCA