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

问题描述

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) {
        }
    }

}

}


解决方案

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

解决方案二:

Java Applet读写客户端串口

时间: 2024-10-03 21:23:02

80块钱帮我解决!Applet java读取客户端串口数据的相关文章

java web 客户端订阅 数据推送

问题描述 java web 客户端订阅 数据推送 推送数据是从第三方拿到的,怎么推给请求这些数据的web页面.注:我的程序和第三方数据源只保持一个连接,这个连接一直接受第三方推过来的数据:每个web页面可能请求的数据也不一样 解决方案 java web服务器推送数据到客户端(pushlet) 解决方案二: 你好,我的理解,推送数据最好是走数据缓存,定时刷新页面的取数比较好,而且每个页面数据也不一样,最好是存下来后再分类取 解决方案三: 想要建立实时web,推荐GoEasy的web实时推送,他们是

java读取PHP接口数据的实现方法_java

和安卓是一个道理,读取json数据 PHP文件: <?php class Test{ //日志路径 const LOG_PATH="E:\phpServer\Apache\logs\\error.log"; //显示的行数 const PAGES=50; public static function main(){ header("content-type:text/html;charset=utf-8"); if(!empty($_GET['action']

解决php fgetcsv 读取csv文件数据不完整问题

在windows其它版本中  代码如下 复制代码 # Open the File. if (($handle = fopen("test.csv", "r")) !== FALSE) {     # Set the parent multidimensional array key to 0.     $nn = 0;     while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {      

利用java读取xml节点数据

xml叫可扩展标记语言 和html的区别在于 显示层和 数据层分离  . 显示可以用css或者  xsl设置数据的显示格式  利用java对xml文件进行解析 用到的类  DocumentBuilderFactory  xml解析器工具   DocumentBuilder文档解析器    Document文档类  NodeList节点类 package me.dom.test; import javax.xml.parsers.*;    //导入相关类 import org.w3c.dom.*

string-java谢谢大家,帮我解决一下吧

问题描述 java谢谢大家,帮我解决一下吧 模拟实现电风扇,可以调 3 档速度(慢速.中速.快速):开关按钮:定时吹风:描述 风扇的扇叶大小.颜色等. 设计Fan 类,属性包括:3 个常量 SLOW (1).MEDIUM(2).FA ST(3)代表风扇的 速度:1 个int 属性speed 指定速度,默认值为 SLOW :1 个boolean属性 on 指定开关机,默 认值false :1 个double 属性 radius 指定风扇扇叶大小:1 个String 属性 color指定扇叶颜色,

上网本超2000元算暴利 山寨本赚10块钱就出货

业内人士点评:"它本质上就是块便宜芯片"在设计.生产.制造都堪称成熟的PC产业,仅靠新概念便带来市场暴利难上加难,除了像苹果这样走惯了时尚路线的公司,很难想象谁还能复制这样的传奇.但这样的故事的确发生了,新概念不仅造就了一家公司一项产品,更是迅速引发全行业的疯狂投入.故事的主角是现今正流行的"上网本"--完全不受经济危机影响的独特商品.而北京晨报记者调查发现,这种目前炙手可热的时尚产品,别看价格比传统笔记本电脑便宜很多,均价在3000元左右,却是货真价实的"

java-麻烦大家帮我解决一下这个问题。Java

问题描述 麻烦大家帮我解决一下这个问题.Java 麻烦大家帮我解决一下这个问题. 就是在java中怎么把文本域中一段文字中的所有关键字全部选中? 如图所示,如word中突出显示内容的功能 解决方案 能检索到文本,但是处于选中状态没有办法,可以使用JTextPane来将特定的文字改样式和颜色. 解决方案二: 阁下的意思是要处理一个文本,然后取出文本中指定的关键字? 解决方案三: String str = 文本域对象.getText().toString(); StringBuffer sb = n

希望有个 java 牛人帮我解决

问题描述 希望有个 java 牛人帮我解决 1.在 java 程序中如何让 String 中的字符串当作程序来运行2.如何通过代码来让. java 文件编译成 class 字节码文件.注 如果可以请附上代码,或者给出思路,小弟会十分感谢.小弟初入此行半年,还没有c 币,希望大家支持下,谢谢 解决方案 我不是牛人,我的理解楼主的第一个问题,是不是想要个Js里的eval()方法,这是别人写的代码,直接上代码.哈哈实现步骤: 1.自定义一个Java类,该Java类中定义一个方法来包含需要被运行的代码.

java类的问题-大神帮帮忙解决包装类的问题

问题描述 大神帮帮忙解决包装类的问题 包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值.这句话究竟什么意思,问了几个人各种说法,例如 Integer it只是声明一个引用."引用"这种东西唯一的作用就是指向某个具体的东西,放在这里来说,你初始化的时候,让这个引用指向了21这个值,然后在it=22这里又让他指向了22.就好比说"我刚才代表21,现在我代表22",改变的是这个引用,跟跳槽啊变心的恋人啊抗战时的汉奸啊似的,但那些个值本身是不改变的,21还是