Java串口通信编程指导_第1页
Java串口通信编程指导_第2页
Java串口通信编程指导_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java 串口通信编程指导Java串口通信编程概述在 java 中,利用 Java Communication 包能够操作串口,但官方的包在 3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年 出的2.0版本,只是在XP下还能使用。另外,也能够用开源的Rxtx实现串口通信,那个地点仅以 Java Communication 包,在 Windows 平台实现串 口通信进行讲明。前期预备下载 Java Communication 包下载地址如下: /Jolt/javacomm20-win32.zip。配置解压缩

2、 javacomm20-win32.zip把 win32com.dll 拷贝到 JAVA_HOMEjrebin把 comm.jar 拷贝到JAVA_HOMEjrelibextset CLASSPATH=JAVA_HOMEjre libext comm.jar;%classpath%实现过程要紧步骤包括: 获得串口标识 打开串口设置串行端口通讯参数猎取输入(出)流进行读写操作 获得串口标识 指定串口的端口号,生成串口的标识类的实例。a. 通过驱动决定通讯端口是可用的。b. 打开通讯端口为了 I/O操作。c. 决定端口的拥有者。d. 解析端口拥有者的争夺。e. 治理事件显示在端口拥有者的中的状态改

3、变 示例代码如下:代码:CommPortlde ntifier portID = n ull;try/ CommPortIde ntifier 总取得 portID = CommPortIde ntifier.getPortlde ntifier("COM1");catch(NoSuchPortException ex)ex.pri ntStackTrace();打开串口示例代码如下:代码:try/求一卜才一port = (SerialPort)portID.open("portApp", 5000);catch(PortInUseException e

4、x)ex.pri ntStackTrace();5000 (毫秒)是超时时刻。设置串行端口通讯参数设置串口传输的波特率、数据位、停止位、奇偶校验等参数。示例代码如下:代码:try /通信条件設定/ 通信速度9600 baud/ 卢一夕匕卜 8bit/1bit/丿。丿亍彳/7口 一卜口一儿設定/ 無制御总使用port.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);port.setFlowCo ntrolMode(SerialPort.FLOWCONTROL_

5、NONE); catch (Un supportedCommOperati on Excepti on ex) ex.pri ntStackTrace();System.exit(1);猎取输入(出)流利用getInputStream(以及getOutputStream(从每个串口产生对应的输 入输出流对象。示例代码如下:代码:/受信7 7protected BufferedReader comReader;/送信7 7protected BufferedOutputStream comWriter;try / RS-232C入力用Reader 总生成comReader = new Buffe

6、redReader(new In putStreamReader(port.getl nputStream();/ RS-232C 岀力用 Writer 总生成comWriter=new BufferedOutputStream(port.getOutputStream(); catch (lOExcepti on ex)ex.pri ntStackTrace();进行读写操作写操作专门简单,只需要调用BufferedOutputStream的write()方法就能够了。示例代码如下:代码:try comWriter.write("送信内容。”);comWriter.flush();

7、 catch (IOExcepti on e) port.close();System.out.println("Serial Send Error:"+e);e.pri ntStackTrace();读操作,需要如下步骤:继承 SerialPortEventListener接口。为 SerialPort添加监听 Listener。实现该接口的 serialEve nt (SerialPortEve nt eve nt)方法。通过BufferedReader的read()方法逐byte读取。因此也能够用readLine()方法进行逐行读取。示例代码如下:代码:public

8、class SerialPortTerm inal exte nds SerialPortHa ndlerimplements SerialPortEventListener /受信7 7protected BufferedReader comReader;/送信7 7protected BufferedOutputStream comWriter;public SerialPortTerminal(String portName)super(portName, "SerialPortTerm in al");try / SerialPortEve nt总受疗取登録port

9、.addEve ntListe ner(this); catch(TooMa nyListe nersExcepti on ex)ex.pri ntStackTrace();System.exit(1);/ Data Available彳YA卜总受疗取port .no tify On DataAvailable(true);try / RS-232C入力用Reader 总生成comReader = new BufferedReader(new In putStreamReader(port.getl nputStream();/ RS-232C岀力用Writer 总生成comWriter =

10、new BufferedOutputStream(port.getOutputStream(); catch (IOExcepti on ex)ex.pri ntStackTrace();System.exit(1);/彳YA卜処理儿一于Apublic void serialEve nt(SerialPortEve nt eve nt) switch(eve nt.getEve ntType() case SerialPortEve nt.OUTPUT_BUFFER_EMPTY:/ Data Available以外 OYAb 処理break;case SerialPortEve nt.DATA

11、_AVAILABLE:/ Data AvailableO処理Stri ng buffer = n ull;Stri ngWriter strWriter = new Strin gWriter();char c = new char20;int n ewData = 0;int i = 0;while (true) try newData = comReader.read();入力入卜】丿一厶力読族込族if (n ewData = -1 | n ewData = 0x0d) / CRbreak;ci = (char) newData;if(i > 100)break; catch (IO

12、Excepti on ex) return;i+;trystrWriter.write(c);strWriter.flush();buffer = strWriter.toStr in g();strWriter.close(); retText = buffer; comReader.close(); port.close();catch(Excepti on e)setReadfi ni shFlg(true); break;测试有关正确安装Java Communication API,并将自己的程序编译通过以后, 你能够按如下方法测试那个程序。如果你只有一台机器,你能够利用一条R S-232电缆将COM1和COM2连接起来,在COM1上运行自己的串口读写 程序,在COM2上运行第二章辅助工具中提到的串口调试工具。如果你有 两台机器的话,你能够利用一条RS-232电缆将两台机器的COM1(或者是C OM2)连接起来,在一端运行程序,另外一端运行串口调试工具。示例代码辅助工具模拟串口软件名称: Virtual Serial Port Driver目 的:由于串口开发,需要硬件接口,以及串口链接线。使用本 软件能够在没有硬件串口接口和链接线的情形下,模拟出串口,同时能够

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论