Giter VIP home page Giter VIP logo

serialporthelper's Introduction

1. 安装RXTX

假设JDK路径如下:
c:\Program Files\Java\jre1.6.0_01\
复制 rxtxParallel.dll 到 c:\Program Files\Java\jre1.6.0_01\bin\
复制 rxtxSerial.dll 到 c:\Program Files\Java\jre1.6.0_01\bin\
复制 RXTXcomm.jar 到 c:\Program Files\Java\jre1.6.0_01\lib\ext\

注意: 如果在windows xp系统上安装还需要crtdll.dll,C运行时组件,自行去下载

2. 引入Jar包SerialPortHelper-1.0.jar

	<dependency>
		<groupId>org.xdemo.utils</groupId>
		<artifactId>SerialPortHelper</artifactId>
		<version>1.0</version>
	</dependency>
非Maven项目,自行下载`SerialPortHelper-1.0.jar`包,放到项目中,也可以自行下载build

3. 编写回调类 继承 AbstractReadCallback ,在call方法中,获取输入流输入的内容

package org.xdemo.utils.serial.demo;

import gnu.io.SerialPortEvent;

import java.io.BufferedReader;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.Timer;
import java.util.TimerTask;

import org.xdemo.utils.serial.AbstractReadCallback;
import org.xdemo.utils.serial.SerialPortHelper;

/**
 * DEMO,获取串口输出
 * @author Goofy
 * @Date 2017年6月20日 上午9:32:23
 */
public class MyReadCallback extends AbstractReadCallback {

	@Override
	public void call(BufferedReader reader, InputStream is) {
		try {
			/**
			 	方式一:
			 	char[] buff=new char[1024];
				reader.read(buff);
				String c=new String(buff).trim();
				addResult(c);
			 
			 	方式二:
			 	String result = reader.readLine();
				addResult(result.trim());
			 	
			 
			 */
			
			//方式三 对于一些乱码的情况,需要进行字符集转换
			
			String result=reader.readLine();
			result=new String(result.getBytes("GBK"),"GBK");
			addResult(result);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public void onError(SerialPortEvent event) {
		System.out.println("出错了,错误类型:\t"+event.getEventType());
	}



	public static void main(String[] args) {
		//连续输出的,一般不需要发送命令,直接就是接受
		final SerialPortHelper sp=new SerialPortHelper();
		sp.open("C:\\serial.config.properties");
		
		//如果需要发送命令的
		//sp.write("P");
		
		//如果需要不停的发送,可以使用#Timer,每隔1秒发送一次
		new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				sp.write("P");
			}
		}, 0, 1000);
		
		MyReadCallback callback=new MyReadCallback();
		sp.read(callback, Charset.forName("UTF-8"));
		while(true)
			System.out.println(callback.getResult());
	}

}

4. 配置文件,参考如下

#端口号
PORT=COM5

#波特率
BAUD_RATE=9600

#奇偶校验	NONE:0,ODD:1,EVEN:2,MARK:3,SPACE:4
PARITY_BIT=0

#数据位	5,6,7,8
DATA_BIT=8

#停止位	1:1,2:2,1.5:3
STOP_BIT=1

#字符编码
CHARSET=UTF-8

serialporthelper's People

Contributors

gaofeigit avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.