通过JAVA读取串口值

转载 2004年06月24日 09:32:00
这是一个通过JAVA的扩展包(javax.comm)从串口读取值的类,
  本类库(javax.comm)主要包括:
 SerialBean.java (与其他应用程序的接口),
 SerialBuffer.java (用来保存从串口所接收数据的缓冲区),
 ReadSerial.java (从串口读取数据的程序)。


 整个类的设计思路大概就是:
 实现一个线程一直在监听串口中是否有数据传送过来,
 如果有的话开始拍照,并取得照片后,直接打印出来。因为涉及到商业秘密,所以拍照函数和取得照片函数采用的是空函数,请见谅!
 若要运行此函数必须下载该扩展包,并加载到你的CLASSPATH下。当然,你若要测试并运行此类的话。可能要花费不少的精力。
 如果你只有一台机器,你可以利用一条RS-232电缆将COM1和COM2连接起来,在COM1上运行SerialExample,在COM2上运行Windows提供的超级终端程序。
 如果你有两台机器的话,你可以利用一条RS-232电缆将两台机器的COM1(或者是COM2)连接起来,在一端运行例程,另外一端运行Windows提供的超级终端程序。
 
该类有相当详细的注释。我想应该不难理解吧!

import java.io.*;
import java.awt.*;
import java.awt.print.*;
import javax.print.*;
import javax.comm.*; //这是一个Java扩展类库,并不包括在标准的Java SDK当中。
//如果你尚未安装这个扩展类那么你需要到sun公司的Java站点下载这个类库

class SuanKou implements Runnable{
  private java.io.FileOutputStream fos=null;
  private Thread th=null;
  private long shiJian=500;//设置间隔的时间
   //private int duanKou=1;//设置端口号
   private String Msg = null;
   private SerialBean SB=null;
   private int isSucces=-1;
 
   //构造函数
  public SuanKou(long sj,int dk) {
    System.out.println("构造函数");
    try{
    fos=new java.io.FileOutputStream("c://log.txt");
   
    this.shiJian=sj;//设定监听端口的时间
   
    //this.duanKou=dk;//端口号
   
    SB = new SerialBean(dk);//创建一个接口对象,参数为端口号
   
   isSucces = SB.Initialize();//初使化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1
  
    th=new Thread(this);//创建一个线程对象
   
    th.start();//创建SuanKou这个对象就开始启动线程
 }catch(java.io.FileNotFoundException fe){
  fe.printStackTrace();
 }catch(Exception e){
  e.printStackTrace();
 }
  }

//拍照函数
  public void snape() {
    System.out.println("拍照函数");
  }

//取得照片函数
  public void getPicture() {
    System.out.println("取得照片函数");

  }
 
  //实现线程接口的RUN方法
  public void run(){
    Thread.sleep(shiJian);
    this.ReadSuanKou();
  }
 
  //定期到串口读取数据和函数,如果能读到数据就调用snape(),getPicture(),函数,写日志,打印
  private void ReadSuanKou() {
   
   //如果初使化成功的话,
    if (isSucces == 1) {
     
      //从串口(缓冲区)中读取指定长度的一个字符串。(500)
     
      try{
       
      Msg = SB.ReadPort(500);

      //如果可以从串口读到数据的话

      if (Msg != null) {
        this.snape();//调用拍照函数
       
        this.getPicture();//调用取得照片函数
       
        java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("EEEE-MMMM-dd-yyyy");

 Date date=new Date();

 String dateFormat=df.format(date);
  
        fos.write(dateFormat.getBytes());//在日志文件中记录当前时间
       
        fos.write(Msg.getBytes());//将读到的数据写到日志文件中
  
  //调用打印方法 注:若要打印,要打印的对象必须实现java.awt.print.Printable接口。即getPicture
  
  //返回的对象必须实现该接口,因为不知道getPicture返回什么对象,故这个打印功能无法实现,不过大概的思路是
  
  /** 1,需要一个打印服务对象。这可通过三种方式实现:
      在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口
      或通过Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象;
      在jdk1.4中则还可以通过javax.print.PrintSerivceLookup来查找定位一个打印服务对象。

                  2、需要开始一个打印工作。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob
   (jdk1.1提供的,现在已经很少用了)调用print或printAll方法开始打印工作;
   也可以通过java.awt.print.PrinterJob的printDialog显示打印对话框,
   然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示打印对话框,
   然后调用print方法开始一个打印工作。
  
  根据以上的提示去做,不会很难!
  */
 
  java.awt.print.PrinterJob pj=new java.awt.print.PrinterJob();
  
  pj.printDialog();//显示打印对话框
  pj.print();//开始打印
  
      }

      //SB.WritePort("OK");若要向串口返回一个结果可以调用该函数?

     
 }catch(Exception e){
  
  e.printStackTrace();

 }finally{
  try{
   fos.close();
    //停止串口检测进程并关闭串口。
        SB.ClosePort();
      
  }catch(Exception e){
   e.printStackTrace();
  }
 }

    }
    else {
      throw RuntimeException("读取串口数据时出错!");
    }

  }

 

  //主函数 
  public static void main(String args[]) {
   
    new SuanKou(1000,1);//参数为间隔的时间,和端口号


  }
}

Java串口编程:串口数据的发送与监听读取

本文的目的是介绍Java串口编程,主要内容包括:1.串口的简单介绍;2.Windows平台下Java串口编程的软硬件环境搭建;3.向串口发送数据以及监听串口并获取其接收到的数据。...
  • u013363811
  • u013363811
  • 2015年03月15日 11:23
  • 18138

Java USB串口编程(64位和32位)

最近公司的项目需要和硬件打交道,而我负责硬件对接这块的主要工作,这几天把java中的串口编程熟悉了下,其中大多是涉及到环境的配置,接下来我把自己做的过程中遇到的问题整理一下,供大家产考!       ...
  • kent45
  • kent45
  • 2015年10月21日 16:47
  • 6631

Java使用开源Rxtx实现串口通讯(串口开发)

http://blog.csdn.net/xiezhiyong3621/article/details/8092150
  • daditao
  • daditao
  • 2014年04月28日 09:18
  • 20534

一个Java读取串口值的类

这是一个通过JAVA的扩展包(javax.comm)从串口读取值的类,本类库(javax.comm)主要包括:  SerialBean.java (与其他应用程序的接口),  SerialBuff...
  • xxyy888
  • xxyy888
  • 2013年05月19日 09:49
  • 3239

Java SWT 设计RS232/RS485串口接受的界面,用线程读取和发送

本文主要介绍基于eclipse SWT 设计RS232/RS485串口接受的界面,并且用线程读取和发送。 部分代码如下: 主界面: 当选择好下拉框的内容后,点击打开按钮,调用函数将参数传递给串口,并以...
  • snadijssajskkj
  • snadijssajskkj
  • 2016年01月08日 15:59
  • 856

java读取串口设备信息

一个最简单的从串口设备读取信息实例: 关于读取串口信息的环境配置过程网上很多,大致就是: 下载javacomm20-win32.zip,解压缩。 截取网上一段配置过程: 1.网上下载j...
  • vanceliu71
  • vanceliu71
  • 2015年05月08日 11:39
  • 333

java 读取串口 com 外部设备

/* * To change this template, choose Tools | Templates * and open the template in the editor. ...
  • zhengjianqi
  • zhengjianqi
  • 2012年08月21日 16:43
  • 17118

通过JAVA读取串口信息

使用JAVA语言通过串口读取串口信息因为毕业设计的需要,前两天通过在网上搜索资料简单学习了一下,现将学习的内容分享给大家。 说明:使用JAVA进行串口通讯一般有两种:第一种,使用sun公司提供的com...
  • m0_37487097
  • m0_37487097
  • 2017年04月24日 17:39
  • 174

Java通过串口读取数据例子

   下载javax.comm包后才能使用这些类。 // 功能:从串行口COM4中接收数据 import java.io...
  • It_BeeCoder
  • It_BeeCoder
  • 2017年07月07日 22:30
  • 558

java读取串口数据

这是我的毕业设计,要求是将电脑串口(USB)接收到的数据打包上传到互联网,花了几天时间了解了java读取串口和制作图形界面的方法,做了一个小程序实现了这个功能,这里只是简单记录一下java读取串口的方...
  • Egean
  • Egean
  • 2016年11月04日 19:47
  • 369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过JAVA读取串口值
举报原因:
原因补充:

(最多只允许输入30个字)