java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程。

package com.garfield.comm;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort; public class SimpleCommIO implements Runnable { static CommPortIdentifier portId;
static String cmdHand = "I\r\n";
static String cmdWeight = "WX\r\n";
static SerialPort serialPort;
static OutputStream outputStream;
static String comm="COM11"; InputStream inputStream;
Thread readThread; public void run() {
while (true) {
try {
byte[] readBuffer = new byte[200]; try {
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
System.out.print("收到数据:"+new String(readBuffer));
}
} catch (IOException e) {
e.printStackTrace();
}
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} public void initComm() {
try{
portId = CommPortIdentifier.getPortIdentifier(comm);
serialPort = (SerialPort) portId.open("SimpleCommIO",2000); outputStream = serialPort.getOutputStream();
inputStream = serialPort.getInputStream(); serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}catch(Exception e){
e.printStackTrace();
} } public void writeComm(String cmd) {
try {
outputStream.write(cmd.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) { SimpleCommIO reader = new SimpleCommIO();
reader.initComm();
Thread readThread = new Thread(reader);
readThread.start();
System.out.println("发出指令:"+cmdHand);
reader.writeComm(cmdHand); //暂停一会儿
try {
Thread.sleep ( 2000 ) ;
} catch (InterruptedException ie)
{ }
System.out.println("发出指令:"+cmdWeight);
reader.writeComm(cmdWeight);
} }

另注配置:

将javacomm20-win32 .zip下载的文件解压缩后,在\javacomm20-win32\commapi目录下有必需的三个文件:

comm.jar,javax.comm. properties和win32comm.dll。

将文件comm.jar拷贝到%JAVA_HOME%\jre\lib\ext;

文件 javax.comm. properties拷贝到%JAVA_HOME%\jre\lib;

文件win32comm.dll拷贝到%JAVA_HOME%\bin。

注意%JAVA_HOME%是jdk的路径,而非jre。

简单的Java串口通讯应答示例的更多相关文章

  1. 一款简单实用的串口通讯框架(SerialIo)

    前言 大龄程序员失业状态,前几天面试了一家与医疗设备为主的公司并录取:因该单位涉及串口通讯方面技术,自己曾做过通讯相关的一些项目,涉及Socket的较多,也使用SuperSocket做过一些项目,入职 ...

  2. java串口通讯环境配置

    用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...

  3. java web下串口通讯

       最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示   ...

  4. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

  5. C#串口通讯

    本文提供一个用C#实现串口通讯实例,亲自编写,亲测可用! 开发环境:VS2008+.net FrameWork3.5(实际上2.0应该也可以) 第一步 创建一个WinForm窗体,拉入一些界面元素 重 ...

  6. 【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互

    引言 在第一章博客中,我们讲了Arduino对Esp32的一个环境配置,以及了解到了常用的一个总线通讯协议,其中有SPI,IIC,UART等,今天我为大家带来UART串口通讯和c#串口进行通讯的一个案 ...

  7. C#串口通讯概念以及简单实现

    最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...

  8. TCP UDP Socket 即时通讯 API 示例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. STM32F10x 学习笔记5(USART实现串口通讯 1)

    STM32F10x 系列单片机中都包含了USART 模块,所谓USART,就是通用同步异步收发器.通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间 ...

随机推荐

  1. Java Math.sqrt()方法

    描述 java.lang.Math.sqrt(double a) 返回正确舍入的一个double值的正平方根.特殊情况: 如果参数是NaN或小于为零,那么结果是NaN. 如果参数是正无穷大,那么结果为 ...

  2. PL/SQL Developer执行.sql文件的几种方法

    1.复制SQL 第一种方法非常常见,也非常简单,先用文本编辑器打开.sql文件,然后把sql复制到PL/SQL Developer的SQL窗口或者命令窗口中运行就行了,本来我也是这么做的,但是我将SQ ...

  3. 以快板之名说Android 应用程序电源管理

    当里个当,当里个当.Android开发UE(用户体验)为导向,首要任务便是省电量. 当里个当,当里个当.有一设备立足于墙边,这个设备唤固定电话.你的app造成这样,用户很快把你弃墙角.你咆哮耗电奈何与 ...

  4. uboot mmc read/write命令用法

    mmc read用来读取mmc内容到内存, mmc write用来写入内存内容到mmc中 具体用法, mmc read <device num> addr blk# cnt [partit ...

  5. AVR单片机命名规则

    ATmega64 TQFP封装现主要有以下型号:ATmega64L-8AU.ATmega64L-8AI.ATmega64-16AU.ATmega64-16AI. 型号标识说明: (1)带"L ...

  6. GIT 如何从另一分支合并特定的文件

    是否遇到过这种情景: 您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了 但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作 以下操作 ...

  7. 转: linux进程地址图解

    http://www.cnblogs.com/clover-toeic/p/3754433.html

  8. Return array from functions in C++

    C++ does not allow to return an entire array as an argument to a function. However, you can return a ...

  9. iOS社交app技术合伙人笔试题

    理想状况当然是找到有管理能力且还在写代码的架构师了,然而假设有这种人,他自己能发起项目了.你要拉上他还真难.满足一定条件就可以了,别追求完美. 还有比这更完美的吗?请生产这种机器人: 性格开朗(开朗≠ ...

  10. C#.NET常见问题(FAQ)-public private protectd internal有什么区别

    首先要区分public和private,这两个修饰符是最常用的.Public就是对外公开的,private就是对外不公开的(类内部可以使用),比如下面我定义一个类的实例,自动补全代码中只有public ...