Java串口通信总结

http://blog.csdn.net/zfinch/article/details/5863004


最近在研究一个东西要用到串口的读写,通过读取串口COM2获取一个指令,然后根据该指令通过配置文件获取其他的信息再通过串口COM1进行做下一步的一系列操作。 
java读写串口要用到的是javax扩展类库javacomm,它是一系列的标准,该类库在sun的官网上只提供linux版本。由于我所应用的平台是win32,所以找了个win32的实现。在此过程中遇到了一系列的问题,后来终于解决问题并完成了通过读写串口进行通信的功能。在此对其java读写串口的情况做个简要说明:

首先下载javacomm包,然后将其解压,解压后需要做的就是配置串口通信相关东西,下面是自己使用的时候的配置:

1.把javax.comm.properties文件拷贝到Java运行时环境的lib目录中,即:
C:/Program Files/Java/jdk1.5.0_12/lib/javax.comm.properties
C:/Program Files/Java/jdk1.5.0_12/jre/lib/javax.comm.properties

2.把win32com.dll拷贝到C:/windows/system32/ 和 C:/Program Files/Java/jdk1.5.0_12/jre/bin/下

3.把comm.jar放到Java运行时环境的lib目录中,即C:/Program Files/Java/jdk1.5.0_12/lib/comm.jar

4.在"环境变量"的CLASSPATH中添加comm.jar,如:%JAVA_HOME%/lib/comm.jar;

然后通过COM的API来实现串口的读写,其实API相当简单,如下代码:

Java代码

    CommPortIdentifier serialPortId = CommPortIdentifier.getPortIdentifier(“COM2”);   

    SerialPort  port = (SerialPort) serialPortId.open(“Read”, 30);//打开COM2串口,其中30参数是用来设置打开串口的超时时间。   

    port.setSerialPortParams(1200, 8, 1, 0);//设置COM2的波特率,数据位,停止位,校验方式等   

      

    //从串口中得到输入输出流了   

    OutputStream out = port.getOutputStream();   

    out .write(buffer);   

    out .flush();   

      

    InputStream in = port.getInputStream();   

    in.read(data);//data是一个byte[]



如果COM1通信要求的波特率是1200,而系统默认的波特率是9600,在系统的设备管理器中修改了COM1的波特率为1200,那么这个时候修改后程序不报错误,但是在串口里获取不到任何信息,也就是在设备管理器修改COM1的波特率是没有用的,必须通过port.setSerialPortParams(1200, 8, 1, 0)来设置其波特率。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值