使用Java Applet和Java串口编程API实现电子称称重功能

本文介绍了如何使用Java Applet和Java串口编程API实现电子称的称重功能。首先,讲解了Java Applet的基础,包括Hello World程序的创建和运行流程。接着,通过SerialPortEventListener接口读取串口数据,并详细阐述了Applet的签名、打包和部署过程。最终,展示了如何利用Javascript在网页上实时显示电子称的重量信息。
摘要由CSDN通过智能技术生成

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 Hello World
当关闭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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值