第一范文网 - 专业文章范例文档资料分享平台

java实现串口通信

来源:用户分享 时间:2025/10/29 4:08:48 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

}

SB.ClosePort(); } }

5. 编译与调试

本类库中使用了Java Communication API (javax.comm)。这是一个Java扩展类库, 并不包括在标准的Java SDK当中。如果你尚未安装这个扩展类库的话,你应该从Sun 公司的Java站点下载这个类库并将其安装在你的系统上。在所下载的包里面包括一个 安装说明,如果你没有正确安装这个类库及其运行环境的话,运行这个程序的时候你 会找不到串口。

正确安装Java Communication API并将上述程序编译通过以后,你可以按如下方法测 试这个程序。如果你只有一台机器,你可以利用一条RS-232电缆将COM1和COM2连接起 来,在COM1上运行SerialExample,在COM2上运行Windows提供的超级终端程序。如果

你有两台机器的话,你可以利用一条RS-232电缆将两台机器的COM1(或者是COM2)连接 起来,在一端运行例程,另外一端运行Windows提供的超级终端程序。如果有必要的 话,可以对SerialExample中所声明的串口进行相应改动。

本程序在Windows 2000 + Java SDK 1.3环境下编译通过并成功运行。 以下是用Java读取串口的程序。 这个简单的程序包括以下文件: IMU.java (主程序)

ReadBuffer.java (从缓冲区读取一个消息) ReadSerial.java (读取串口数据并放入缓冲区) SerialBuffer.java (缓冲区)

WriteSerial.java (不断的往串口送星号'*') 测试程序:

SendCom.java (将一个数据文件往串口发送) SEND.TXT (供测试用的数据文件)

在这个通讯程序中使用了一个简单的协议,既不同的消息之间用星号'*'作为分隔。这个程序中的问题是ReadSerial进程和WriteSerial进程不能够同时启动,出错信息是不能够打开串口,因为同样一个串口不能够同时被打开两次(在ReadSerial中声明了FileReader和在WriteSerial中声明了FileWriter)。这样是不能够实现全双工通讯的。 /* *

* IMU.java 1.0

* Main Program for Serial Communication *

* Created: March 27, 2001 *

* Author : Qingye Jiang (John) * American GNC Corporation

* 888 Easy St, Simi Valley CA 93065-1812 *

* Contact: (805) 582-0582 (Tel), (805) 582-0098 (Fax) * qjiang@tsinghua.edu * */

import java.io.*; class IMU {

public static void main(String[] args) {

//TO DO: Add your JAVA codes here File ComPort = new File(\ SerialBuffer SB = new SerialBuffer();

ReadSerial r1 = new ReadSerial(SB, ComPort); ReadBuffer r2 = new ReadBuffer(SB); WriteSerial r3 = new WriteSerial(ComPort); r1.start(); r2.start(); r3.start(); } } /* *

* ReadBuffer.java 1.0

* Program to Read the Serial Buffer *

* Created: March 27, 2001 *

* Author : Qingye Jiang (John) * American GNC Corporation

* 888 Easy St, Simi Valley CA 93065-1812 *

* Contact: (805) 582-0582 (Tel), (805) 582-0098 (Fax) * qjiang@tsinghua.edu

* */

import java.io.*;

public class ReadBuffer extends Thread {

private SerialBuffer ComBuffer; public ReadBuffer(SerialBuffer SB) {

ComBuffer = SB; }

public void run() {

String Msg; while (true) {

Msg = ComBuffer.GetMsg(); System.out.println(Msg); } } } /* *

* ReadSerial.java 1.0

* Program to read characters from the serial port and put it * to the buffer *

* Created: March 27, 2001 *

* Author : Qingye Jiang (John) * American GNC Corporation

* 888 Easy St, Simi Valley CA 93065-1812 *

* Contact: (805) 582-0582 (Tel), (805) 582-0098 (Fax) * qjiang@tsinghua.edu * */

import java.io.*;

public class ReadSerial extends Thread {

private SerialBuffer ComBuffer; private File ComPort;

public ReadSerial(SerialBuffer SB, File Port) {

ComBuffer = SB; ComPort = Port; }

public void run() {

int c; try {

FileReader in = new FileReader(ComPort); while (true) {

c = in.read();

ComBuffer.PutChar(c); } try {

FileReader in = new FileReader(ComPort); while (true) {

c = in.read();

ComBuffer.PutChar(c); }

} catch (IOException e) {} } } /* *

* SerialBuffer.java 1.0

* Class that implements the serial buffer *

* Created: March 27, 2001 *

* Author : Qingye Jiang (John) * American GNC Corporation

搜索更多关于: java实现串口通信 的文档
java实现串口通信.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0b1d07nd0h1klhk34qoa_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top