JAVA中的串口通信

在Windows环境下,使用Java进行串口通信可以通过SUN公司的comm包。首先,需要下载javacomm20-win32开发包,并进行配置,将javax.comm.properties放入java_homejrelib,comm.jar放入java_homejrelibext,win32com.dll放入java_homejrein。然后,可以编写简单的测试程序以实现串口通信功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA中可以利用SUN公司提供的comm包提供的类型来实现,下面为在windows下的环境搭建过程和简单实例程序:

1、下载 javacomm20-win32 开发包,网上都有提供,随便下一个

2、 配置:(如果使用的是Myeclipse,注意其是自带有jdk的安装目录的,需要在其下配置)

               javax.comm.properties放在java_home\jre\lib\下
               comm.jar放在java_home\jre\lib\ext\下
               win32com.dll放在java_home\jre\bin\下

3、 简单例程(更深入理解可看包下提供的例子):

 

package com.function;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Enumeration;

import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;

import org.json.JSONObject;

public class SerialDemo2 implements SerialPortEventListener{
	private SerialPort sPort ;
	private CommPortIdentifier portId;
//	private BufferedReader mReader;
//	private BufferedWriter mWriter;
	private OutputStream os;
	private InputStream is;
	private String message;
	public static JSONObject mJsonObject;
	
	
	public SerialDemo2() {
		try {
			mJsonObject = new JSONObject();
			portId = CommPortIdentifier.getPortIdentifier("COM2");
			sPort = (SerialPort) portId.open("name",2000);
			os = sPort.getOutputStream();
			is = sPort.getInputStream();
//			mReader = new BufferedReader(new InputStreamReader(sPort.getInputStream()));
//			mWriter = new BufferedWriter(new OutputStreamWriter(sPort.getOutputStream()));
			
			sPort.addEventListener(this);
			sPort.notifyOnDataAvailable(true);
			sPort.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	

	public void serialEvent(SerialPortEvent event) {
		switch (event.getEventType()) {
		case SerialPortEvent.BI:
		case SerialPortEvent.OE:
		case SerialPortEvent.FE:
		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[44];
			try{
				while (is.available()>0) {
//					int numBytes = is.read(readBuffer);
					is.read(readBuffer);
				}
				
//				while((message = mReader.readLine())!=null){
//					System.out.println(message);
//					
//				}
				
				message = new String(readBuffer);
				System.out.println(message);
				
				/**
				 * 把message字符串根据分隔符做成jsonobject
				 */
				String[] value = message.split("/");
				
				
				mJsonObject.put("press", value[0].toString());
				mJsonObject.put("temp", value[1].toString());
				mJsonObject.put("dist", value[2].toString());
				mJsonObject.put("speed", value[3].toString());
				mJsonObject.put("rec", value[4].toString());
				
				System.out.println(mJsonObject);
				
			}catch (Exception e) {
				e.printStackTrace();
			}

		default:
			break;
		}
		
	}
	
	public static void main(String[] args) {
		new SerialDemo2();
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值