80块钱帮我解决!Applet java读取客户端串口数据

图片说明
大神!来帮我!

```package com.z.remotecheck.util;

import java.applet.Applet;
import java.awt.HeadlessException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.TooManyListenersException;

import javax.comm.CommDriver;
import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;

import com.z.remotecheck.util.Readstr.Read;

public class test extends Applet {
static Map map = new HashMap();
//private static DefaultSet ds = new DefaultSet();
private static final String LIB_PATH_SUFFIX = "system32";
private static final String DLL_FILE = "win32com.dll";

public test() throws HeadlessException {
    super();
}

public void init() {
    String driverName = "com.sun.comm.Win32Driver";
    CommDriver  driver = null;
    System.out.println(".....初始化.....");
    addwin32();
    System.loadLibrary("win32com");
    try {
        driver = (CommDriver) Class.forName(driverName).newInstance();
        driver.initialize();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

public void start() {
    System.out.println("....start....");
    CommPortIdentifier portId;
    Enumeration portList;
    portList = CommPortIdentifier.getPortIdentifiers();
    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier)portList.nextElement();
        if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
            if(portId.getName().equals("COM1")||portId.getName().equals("COM2")
                    ||portId.getName().equals("COM3")||portId.getName().equals("COM4")||portId.getName().equals("COM5")
                    ||portId.getName().equals("COM6")||portId.getName().equals("COM7")||portId.getName().equals("COM8")
                    ||portId.getName().equals("COM9")||portId.getName().equals("COM10")||portId.getName().equals("COM11")
                    ||portId.getName().equals("COM12")||portId.getName().equals("COM13")||portId.getName().equals("COM14")){
                System.out.println(portId.getName() + "开启");
                try {
                    Read reader = new Read(portId);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    break;
    }
}

public void destrory() {

}

public void addwin32() {

    try {
        // 获取加载库时搜索的路径列表
        String dirs = System.getProperty("java.library.path");
        String[] libs = dirs.split(";");
        String libPath = "";
        for (String lib : libs) {
            if (lib.toLowerCase().endsWith(LIB_PATH_SUFFIX)) {
                libPath = lib;
                break;
            }
        }
        File dll = new File(libPath, DLL_FILE);
        if (!dll.exists()) {
            URL url = new URL(super.getCodeBase() + DLL_FILE);
            InputStream is = url.openConnection().getInputStream();
            FileOutputStream fos = new FileOutputStream(dll);
            byte[] buf = new byte[256]; // 读取缓存
            int len = 0;
            while ((len = is.read(buf)) != -1) {
                fos.write(buf, 0, len);
            }
            fos.flush();
            fos.close();
            is.close();
            System.out.println("创建文件完成[" + dll + "].");
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public class Read implements Runnable, SerialPortEventListener {
    InputStream inputStream;
    SerialPort serialPort;

    Thread readThread;

    public Read(CommPortIdentifier portId) throws InterruptedException {

        try {

            serialPort = (SerialPort) portId.open("MyReader", 2000);

            // portId.open("串口所有者名称", 超时等待时间);

        } catch (PortInUseException e) {

            // 如果端口被占用就抛出这个异常

            e.printStackTrace();

        }

        try {
            // outputStream = serialPort.getOutputStream();
            inputStream = serialPort.getInputStream();
            // 从COM9获取数据

        } catch (IOException e) {
        }

        try {
            serialPort.addEventListener(this);

            // 添加监听器

        } catch (TooManyListenersException e) {
        }

        serialPort.notifyOnDataAvailable(true);

        /* 侦听到串口有数据,触发串口事件 */

        try {

            serialPort.setSerialPortParams(9600,// 波特率

                    SerialPort.DATABITS_8,// 数据位数

                    SerialPort.STOPBITS_1,// 停止位

                    SerialPort.PARITY_NONE);// 校验

        } catch (UnsupportedCommOperationException e) {
        }

        readThread = new Thread(this);

        readThread.start();

        // 启动线程

    }

    @Override
    public void serialEvent(SerialPortEvent event) {
        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:

            byte[] readBuffer = new byte[20];
            /*
             * String write = new String("111"); try {
             * outputStream.write(write.getBytes());
             * //System.out.println(write.getBytes()); } catch (IOException
             * e1) { e1.printStackTrace(); }
             */

            try {
                while (inputStream.available() > 0) {
                    int n = 0;
                    int numBytes = inputStream.read(readBuffer);
                    // System.out.println("numBytes" + numBytes);
                    //
                    String emid = "";
                    for (int i = 0; i < numBytes; i++) {
                        // System.out.println(readBuffer[i]);
                        n = readBuffer[i] & 0xFF;
                        emid += n;
                    }
                    // emids.clear();
                    // emids.add(emid);
                    map.put("emid", emid);
                    System.out.println(map.get("emid"));
                }
            } catch (IOException e) {
            }
            break;
        }
    }

    @Override
    public void run() {
        try {

            Thread.sleep(30000);

            serialPort.close();

            System.out.println("串口关闭");

            // 设定30秒后端口关闭,程序随之结束

        } catch (InterruptedException e) {
        }
    }

}

}


0

1个回答

各位大神 请帮小弟看一下 我真的很需要解决办法.

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java Applet读写客户端串口——终极篇
测试环境: SDK:Oracle JRockit for Java version 6, Java Communication for Windows 2.0 OS:WINDOWS7 外设:串口条形码扫描枪 Server:Tomcat6   看了网上良莠不齐的关于Applet访问串口的文章,总结起来所关注的问题无外乎以下3个: 1.    三个文件(comm.jar、javax.
java Applet从网页读取数据
java  applet 又称为java小程序  是嵌入在浏览器中运行的程序 用户可以通过 嵌入在浏览器中的java虚拟机来执行java小程序   java小程序不能随意的访问用户的本地资源更好的保护了安全性   java小程序的四个生命周期 init  start st
使用Java Applet和Java串口编程API实现电子称称重功能
Java Applet技术应该算是Java语言诞生之初在Web领域唯一的一个卖点,有一段时间非常流行Applet做的动画,聊天室和游戏。但是由于Applet自身存在的一些问题,比如要求浏览器装有JRE,很多用户不愿意去装;开发困难,没有好的IDE,性能差等;导致Applet慢慢地被Java在服务器端的优秀表现所淹没。 Java串口编程使用的是javax.comm包下的SerialPortEventL
java applet调用客户端dll 简单案例
一、java applet调用客户端dll 简单案例      Applet简介:            与一般的Java应用程序不同,Applet不是通过main方法来运行的。在运行时Applet通常会与用户进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例如根据安全策略,限制Applet对客户端文件系统的访问)。     工作原理:          含有A
Applet读取客户端串口数据实例
Applet读取客户端串口数据的实例 详细描述了 客户端浏览器嵌入的Applet小程序读取串口信息,然后送到服务器的过程
网页java applet串口通信读取RFID电子标签读写
该applet读取RFID需要jdk6,jdk7会弹出安全运行验证。jdk7可以使用,但是不友好,每次都提示。
java+applet读取串口+开发说明 两种方式
java+applet读取串口+开发说明 两种方式 .
web开发中如何打开客户端(pc机上)的串口(注:java)
 最近在开发的一个web系统中,需要用到串口技术,实现的语言是java(JDK1.5),开发平台是window2000server,web服务器是tomcat,在sun公司下载了communication包,做了比较深入的研究,但最终不是要得到的结果,虽然实现了把串口打开,传送数据等要求,但那实现的是打开服务器的串口,搞到最后是空忙一场,现在想请教有过这方面开发经验的同行,希望能给
Java读取串口数据并可在网页上调用
Java读取串口数据,并可在网页上调用显示读出的数据,动态控制串口
java串口编程-读取称重仪表中净重
一、需求说明         将仪表和计算机串口相连,计算机通过软件向仪表发送指令,然后仪表返回结果,在计算机软件界面上显示。   二、实现过程 1、查看仪表说明书         仪表型号为XK3190-A9,主要是查看相关参数(波特率、数据位、停止位、奇偶校验),通讯方式及指令规则。   2、使用串口通讯工具、串口监听工具进行调试         网上可以下到很多相关软件,主要...
B/S模式系统 Applet 客户端使用 JNA调用本地DLL资源
先将依赖的DLL放在JRE的bin目录下(注意:浏览器在环境中既有JDK也有JRE调用Applet时,默认使用的是系统中的JRE,只有放在JRE的bin目录下的DLL才会被找到) 使用JNA写个DLL库的接口 [code=&quot;java&quot;] package com.test; import com.sun.jna.Native; import com.sun.jna.ptr....
Java调用RXTX库与Arduino进行串口通讯需注意的编程问题
准备用Arduino做一个jtag来调试WRTNode,在使用RXTX库与Arduino通讯时,出现了一些问题,总结如下: 1.在设置串口参数和获取Serial的输入/输出之间,需要至少2s的延时,否则串口通讯将不正常,但程序却没有任何的提示! 1: serialPort.setSerialPortParams(DATA_RATE, SerialPort
java,JS,web串口通信
用JS,略加了VBS做的javaweb串口通信,需要添加注册码, 1.下载mscomm32.ocx控件,放到放到X:\windows\system32\ 要注册一下的,点击运行--输入Regsvr32 C:\windows\system32\Mscomm32.ocx 2.需要注册 在运行输入regedit 会看到注册表编辑器,确定后 loacal_machine——>software——>microsoft—— >Internet Explorer——>ActiveX Compatibility下新建项一个以控件classID的注册项。Compatibility Flags设为400,将其改为0 注意,(这个classID,和你在页面代码的classID是一样的,如是注册编辑器里面有了就这注册码只需要修改Compatibility Flags设为400,将其改为0,如果没有这个注册码,需要手动新建。)
获取PC硬件信息方法一:利用Java Applet
 Java Applet可以运行在网页上面,实现功能是通过调用Java来获取本地硬盘信息,前提是本机必须安装Java环境才能运行,不然会提示你安装。 下面是代码: package com.test; import java.applet.Applet; import java.awt.Graphics; import java.io.BufferedReader; import
使用java applet通过签名访问客户端串口
标签: 前端时间公司有需求要访问客户端串口读取电子称的数据,通过网上资料,决定使用applet通过电子签名的形式实现。 1.先写applet:这里我是使用RXRTcomm.jar LocalFileApplet.java,JobThread.java public class LocalFileApplet extends Applet { private static fina...
Applet+客户端打印+jasperreport+报表
新建一 web 项目 Test2。将 iReport 目录 lib 下的所有 jar 包导入。在 servlet 程序中把从数据库得到的数据传入 *.jrxml 文件得到 *.jrprint 文件(这才是我们想要的东西),并把这个对象写入 Stream流,以返还给请求客户端。源码
java 读取串口数据(绝对可使用)
JAVA 读取串口数据,推荐使用串口调试工具先测试成功在使用。
Java通过串口读取数据例子
   下载javax.comm包后才能使用这些类。 // 功能:从串行口COM4中接收数据 import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.TooManyL
java 打印功能示例(服务器端、web端Applet实现)
服务器端: package test.print; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import javax.print.Doc; import javax.print.DocFlavor; import jav
JavaWeb 用于windows的串口数据读取
串口数据读取类,用于windows的串口数据读取; 1.例如观察者为羊,被观察者为狼 ,模仿的场景为狼叫羊跑,可参考博客: https://blog.csdn.net/dada360778512/article/details/6977758 2.模拟串口传输数据,需要两个工具,Virtual Serial Port Driver、串口调试助手;可参考: https://jingyan.b...
串口实现服务器和客户端相互连接
1.什么是socket?     socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –&gt; 读写write/read –&gt; 关闭close”模式来操作。Socket就是该模式的一个实现,        socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭).Socket是应用层与TCP/IP协
applet实现串口称重
applet实现串口称重applet实现串口称重applet实现串口称重applet实现串口称重applet实现串口称重applet实现串口称重
java读取硬件串口——数据断行问题
Java与GPS设备,利用串口通信。获取到的数据异常,原本整条的数据断成几行出现,断开的地方不固定是随机的。影响对GPS定位信息的解析。
通过javascript调用Applet程序对客户端文件系统进行操作
首先你的类要 package com.app.applet; import java.applet.Applet; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExcepti
java入门---Applet 基础之Applet 类&Applet 的调用&获得applet参数&指定 applet 参数
    Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。如下所示是独立的 Java 应用程序和 applet 程序之间重要的不同:Java 中 Applet 类继承了 java.applet.Applet 类。Applet 类没有定义 main(),所以一个 Appl...
win32comm.dll,comm.jar,javax.comm. properties
applet读取串口必备:win32comm.dll,comm.jar,javax.comm.properties
利用Applet进行Web打印
一web打印常见方法: 1,一种简单的方法是在html上调用window.print(),但是这种方法极其“简陋”,除了要弹出一个对话框让我们选择打印机外,还有就是打印的内容不大好控制。 2,利用pdf,先将要打印的内容呈现在pdf上,再点击pdf上的打印按钮,但是一般要执行两步。很多情况下,这是一种不错的选择。 3,利用插件,有ActiveX控件,Applet插件,一下讲解applet打印。 二...
Java Applet小应用程序,通过HTML进入,在客户端本地执行
Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。 当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持
applet签名的方法
当你applet要进行客户端操作时,如读取本地文件,沙箱原理使你的applet必须得到信任,此时对applet进行签名就可以解决这个问题
java监听串口数据
java监听串口,我看了下3个实现方式JavaComm;RXTX; PureJavaComm发现JavaComm太陈旧;PureJavaComm运行都困难。只有RXTX支持的比较好。使用RXTX需要下载对应的32位或64位DLL文件。下载地址 http://rxtx.qbang.org/wiki/index.php/DownloadRXTXcomm.jar 拷贝到 %JAVA_HOME%\jre\...
用Javascript检测浏览器是否安装了JRE,能否运行APPLET .
假设页面上有一个APPLET: [code=&quot;html&quot;][/code] 因为Applet有一个isActive()方法,所以我们通过Javascript调用这个方法,如果成功返回true证明Applet正常运行,那么肯定正确安装了JRE。 [code=&quot;js&quot;] //检查JRE是否安装 try{ if(document.myApplet.isActive()){ al...
Java串口通信详解
 序言说到开源,恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。这也难怪,毕竟就像某个著名NBA球员说的那样:“我还要养家,所以千万美元以下的合同别
给Java Applet设置权限的问题(转)
今天编了个用Applet中的按钮来控制文件的写入,但在运行的时候总是提示好多的异常,一大堆的英文看也没看,也没去看究竟 是什么原因造成的,还以为是程序在哪里出了问题,所以……后来实在找不出问题,就给在别的机器上,结果运行完全正常,无语……后来才仔细看控制台提示的异常信息,仿佛是跟安全有关的,再仔细一看是说Applet权限写文件,顿悟…… 以下是在网上搜到的给Applet设置权限的问题,问...
一次 applet 客户端打印 jasperreport 报表任务笔记
 一次 applet 客户端打印 jasperreport 报表任务笔记为了方便更多的人了解、使用 Java 打印,写了这个!也希望高手们不吝赐教,指出其中的不足之处,帮助我们提高项目性能,谢谢!背景:.NET 项目中用 webprint3.0 破解版进行打印。客户反映可否不预览、不弹出打印机对话框,点击“打印”按钮后打印机直接打印?要求:为了使打印精确,不可以使用 IE 的打印功能;另外
客户端applet调用dll,折腾一晚上搞定
1.生成证书(cjzk.keystore) keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36000 -alias www.cjzk.com -keystore cjzk.keystore 2.导出证书(cjzk.cer) keytool -exportcert -alias www...
Java通过串口通信实现温度监测
开发环境 JDK1.8 + Rxtx2.1.7 + Eclipse 一: 首先,你需要下载一个额外的支持Java串口通信操作的jar包,由于java.comm比较老了,而且不支持64位系统,这里推荐Rxtx这个jar包(32位/64位均支持)。 下载地址: http://files.cnblogs.com/files/Dreamer-1/mfz-rxtx-2.2-20081207-w...
读取串口数据,java写的
eclipse idea 导入可以直接使用,读取串口代码,已经封装好,亲测可用。
java读取串口数据
这是我的毕业设计,要求是将电脑串口(USB)接收到的数据打包上传到互联网,花了几天时间了解了java读取串口和制作图形界面的方法,做了一个小程序实现了这个功能,这里只是简单记录一下java读取串口的方法。首先查到java读取串口数据,需要下载一个叫javacomm20-win32的包,这个 包是官方提供的,已经过时了,看名字也知道只支持32位的系统。由于是64位系统的电脑,几番搜寻后发现了一个叫RX
不使用applet和active控件实现java获取客户单ip地址和mac地址
[code=&quot;java&quot;] import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; impor...
java 读取串口 com 外部设备
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CalcWgtPro; /** * * @author luolai */ import java.io.BufferedReader; import j
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习的客户端 java学习客户端