- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java串口编程
前沿,要进行串口编程必须安装sun公司的comm包和相应的dll文件,若是用eclipse编程的话,把jar和dll文件复制到你所建的项目下,然后在eclipse中选择“项目"菜单,把项目下的.jar文件作为外部jars加入。
首先介绍两个类
CommPortIdentifier------串口和并口的硬件初始化类,同时包括选择是并口还是串口,这在它的常用构造方法里很好的体现了:CommPortIdentifier.getPortIdentifier(commName),commName形式为COM1字符串时表示为串口.
SerialPort------------串口类的软件初始化类,包括输入输出流、设置参数等等。名字随看起来像是串口,但是它的意思实际上是序列话,包括串口和并口的基本设置.常用构造方法SerialPort serialPort = (SerialPort) portId.open("CommBean", 1000),第一个参数为应用程序名称,第二个为超时时间。
注意点:
一、这两个类创建的时候,第一个类CommPortIdentifier应该设置为static,不然的话,运行到第二次便会出错,原因是还在使用串口,不能创建新的串口程序了。
二、在SerialPort设置参数的时候,数据位一定要设置好,不然的话,会出现?,反过来如果出现了?在程序结果里就是你的数据位设置有误。
三、如果程序里出现了“口”方框一样的东西就是你在没有数据送来的时候读取数据,解决方法是,等待有数据时才读串口。
程序实例:
package four;
import gnu.io.*;import java.io.*;import java.util.*;
public class COM implements Runnable, SerialPortEventListener {
private static Thread readThread;// static,保证该线程唯一
private volatile boolean toRead = false;// volatile 保证不同线程得到的值一致
private static CommPortIdentifier portId;// 只设portId为static就可,下面的输入输出流由portId产生
private SerialPort serialPort;
private String commName = "COM2";
private int bPS = 9600;
private int dataBit = 7;//和C51通信必须设为7位,不然输出不对
private int stopBit = 1;
private int pariteyBit = 0;
private OutputStream out;
private InputStream in;
private String encoding = "gb2312";
public boolean initComm() { boolean ok = false; try {// 打开硬件资源,获取并口 portId = CommPortIdentifier.getPortIdentifier(commName); } catch (NoSuchPortException e) { System.out.println("Get portid err" + e.getMessage()); return ok; } try {// 打开软件资源,设置进程名称和超时时间 serialPort = (SerialPort) portId.open("CommBean", 1000); } catch (PortInUseException e) { System.out.println("Get serialport err " + e.getMessage()); return ok; } try {// 设置数据传输参数 serialPort.setSerialPortParams(bPS, dataBit, stopBit, pariteyBit); } catch (UnsupportedCommOperationException e) { System.out.println("Set port params err " + e.getMessage()); return ok; } try {// 创建输入流 in = serialPort.getInputStream(); } catch (IO
文档评论(0)