介绍
本篇文章给大家分享的是有关怎么在Java中实现一个串口通信功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
用Java实现串口通信(windows系统下),需要用到太阳提供的串口包javacomm20-win32.zip。其中要用到三个文件,配置如下:
1. comm.jar放置到JAVA_HOME/jre/lib/ext; win32com
2.。dll放置到JAVA_HOME/bin,
3. javax.comm.properties两个地方都要放
,,,JAVA jre/lib(也就是在文件夹下的jre)
,,JAVA_HOME/jre/lib
说一下我应用的环境。电子秤称重时,计算机通过串口给称重控制显示器发送一次命令“R”,控制显示器则发送一次重量数据给串口,计算机再读取将数据显示在网页上。这样就构成了一个实时称重系统。
读写串口的代码如下:
package com.chengzhong.tools; import . io . *; import javax.comm.CommPortIdentifier; import javax.comm。*; public class  SerialBean { public static  String PortName; public static  CommPortIdentifier portId; public static  SerialPort 串口; public static  OutputStream ; public static  InputStream ;//保存读数结果 public static  String 结果=啊? public static  int openSignal=1; public SerialBean (int PortID) {=,PortName “COM", + PortID; } public int 初始化() { openSignal才能=1; ,试一试 {才能 时间=portId 才能;CommPortIdentifier.getPortIdentifier (PortName); ,试一试 {才能 serialPort 才能=,(串口) portId.open才能(“Serial_Communication",, 2000); ,,},catch (PortInUseException e) {才能 ,,,如果(! SerialBean.portId.getCurrentOwner () .equals (“Serial_Communication")) ,,,{ ,,,,,openSignal=2,,//该串口被其它程序占用 ,,,}else 如果(SerialBean.portId.getCurrentOwner () .equals (“Serial_Communication")) { ,,,,,openSignal=1; ,,,,,return openSignal; ,,,} ,,return openSignal; ,,}//才能Use InputStream 用拷贝read 得到,serial 港口,以及OutputStream//out 才能用write 用,serial 港口。 ,试一试 {才能=,拷贝才能serialPort.getInputStream (); 时间=out 才能;serialPort.getOutputStream (); ,,},catch (IOException e) {才能 ,,,,openSignal=3,,,//输入输出流错误 ,,,,return openSignal; ,,}//才能Initialize 从而communication parameters 用9600年,8日,1,没有。 ,试一试 {才能 serialPort.setSerialPortParams才能(9600 SerialPort.DATABITS_8才能, SerialPort.STOPBITS_1才能, SerialPort.PARITY_NONE才能); ,,},catch (UnsupportedCommOperationException e) {才能 ,,,,openSignal=4,,,//参数不正确 ,,,,return openSignal; ,,} ,,},catch (NoSuchPortException e) {才能 ,,,,portId=零; ,,,,openSignal=5,,//没有该串口 ,,,,return openSignal; ,,}//才能,when successfully open 从而serial 港口,create a new serial 缓冲区,//才能,then create a thread that consistently accepts incoming signals 从//才能,从而serial 港口只Incoming signals 断开连接;stored 拷贝,serial 缓冲区。//return success 信息 return openSignal; }/* * * *,却;能够function returns  a string with a certain length 得到,传入的 *,消息。 * *,@param Length 从而Length of 从而string 用be 返回。 * */public static  void ReadPort () { SerialBean.result=安拍堋? int c; try { 如果才能(!=null) { ,,,,(in.available()在0) ,,,{ ,,,,,c =, in.read (); ,,,,,Character d =, new 字符((char), c); ,,,,,SerialBean.result=SerialBean.result.concat (d.toString ()); ,,,} ,,} },catch (IOException e), {//才能,TODO Auto-generated catch 块 e.printStackTrace才能(); } }/* * * *,却;能够function sends  a message through 从而serial 港口。 * *,@param Msg 从而string 用be 发送。 * */public static  void WritePort (String 味精) { 试一试 { 如果才能(!=null) { null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在Java中实现一个串口通信功能