返回顶部
首页 > 资讯 > 精选 >如何使用Java读取串口的程序(转)
  • 448
分享到

如何使用Java读取串口的程序(转)

2023-06-03 06:06:36 448人浏览 安东尼
摘要

小编给大家分享一下如何使用Java读取串口的程序(转),希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!这个简单的程序包括以下文件:IMU.java (主程序)ReadBuffer.java (从缓冲区读取一个消息)ReadS

小编给大家分享一下如何使用Java读取串口的程序(转),希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

这个简单的程序包括以下文件:

IMU.java (主程序)
ReadBuffer.java (从缓冲区读取一个消息)
ReadSerial.java (读取串口数据并放入缓冲区)
SerialBuffer.java (缓冲区)
WriteSerial.java (不断的往串口送星号´*´)

测试程序:

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

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

测试程序:

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

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

class IMU
{
public static void main(String[] args)
{
//TO DO: Add your JAVA codes here

File ComPort = new File("COM1");

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();
}
}
---------------------------------------------
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);
}

}
}
-----------------------------------------------
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) {}
}
}
------------------------------------------------
public class SerialBuffer
{
private String Content = "";
private String CurrentMsg, TempContent;
private boolean available = false;

public synchronized String GetMsg()
{
int SepMark;

if ((SepMark = Content.indexOf(´*´)) == -1)

{
available = false;
while (available == false)
{
try
{
wait();
} catch (InterruptedException e) { }
}
SepMark = Content.indexOf(´*´);
}

CurrentMsg = Content.substring(0, SepMark);
TempContent = Content.substring(SepMark+1);
Content = TempContent;
notifyAll();
return CurrentMsg;
}

public synchronized void PutChar(int c)
{
Character d = new Character((char) c);
Content = Content.concat(d.toString());
if (c == ´*´)
{
available = true;
}
notifyAll();
}
}
-------------------------------------------------
import java.io.*;

public class WriteSerial extends Thread
{
private SerialBuffer ComBuffer;
private File ComPort;

public WriteSerial(File Port)
{
ComPort = Port;
}

public void run()
{
int c;
try
{
FileWriter out = new FileWriter(ComPort);
while (true)
{
out.write(´*´);
}
} catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
-----------------------------------------------
import java.io.*;

public class SendCom
{
public static void main(String[] args)
{

File OutFile = new File("SEND.TXT");
File ComPort = new File("COM2");

int c;

try
{
FileReader in = new FileReader(OutFile);
FileWriter out = new FileWriter(ComPort);
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
} catch (IOException e) {}

}
}
----------------------------------------------
SEND.TXT*

This is a sample of the data file for program testing. *

It should be in the same directory as the SendCom.class file.*

When you run this sample program, connect your COM1 and COM2 with a
serial cable so that you can test this program on one Machine. If
you have two machines, you can connect the two machine via a serial
cable and test it. Modified the definition of ComPort in the program
if necessary. *

看完了这篇文章,相信你对“如何使用Java读取串口的程序(转)”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何使用Java读取串口的程序(转)

本文链接: https://lsjlt.com/news/233176.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用Java读取串口的程序(转)
    小编给大家分享一下如何使用Java读取串口的程序(转),希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!这个简单的程序包括以下文件:IMU.java (主程序)ReadBuffer.java (从缓冲区读取一个消息)ReadS...
    99+
    2023-06-03
  • python如何读取串口数据
    在Python中,可以使用第三方库pyserial来读取串口数据。首先需要安装pyserial库,可以使用pip安装: pip in...
    99+
    2024-04-02
  • java使用程序块(转)
    java使用程序块(转)[@more@]在Java 中,可以将2个或2个以上的语句组成一组,这样的一组语句称为程序块(Codeblocks )。程序块是通过将所属语句放在花括号中来实现。一旦创建了程序块,它就成为一个逻辑单元,可以作为一个单...
    99+
    2023-06-03
  • 用JAVA程序取得IP地址(转)
    用JAVA程序取得IP地址(转)[@more@]在TCP/IP 互联网时,经常会需要查询自己主机的IP地址和www服务器的IP地址。虽然,我们可以使用IPCONFIG 和PING 进行IP地址查询,但是如果在应用程序或APPLET中使用此命...
    99+
    2023-06-03
  • 获取Java程序的窗口句柄
    在Java中,可以使用`java.awt.Window.getWindows()`方法获取当前所有窗口的实例,然后使用`java.a...
    99+
    2023-09-14
    java
  • 如何使用 Java 灵活读取 Excel 内容?
    在日常工作和学习中,我们经常需要从 Excel 文件中读取数据。对于少量数据,手动复制和粘贴可能是可行的,但是对于大量的数据,这种方法会变得非常低效。在这种情况下,使用 Java 程序自动读取 Excel 文件中的数据将是更好的选择。 本教...
    99+
    2023-09-12
    java excel 开发语言
  • java中如何使用substring截取字符串
    在Java中,可以使用substring方法来截取字符串。substring方法有两种重载形式:1. substring(...
    99+
    2023-08-24
    java substring
  • java如何读取properties的值
    在Java中,可以使用java.util.Properties类来读取properties文件的值。 以下是一个简单的示例: imp...
    99+
    2024-02-29
    Java
  • 如何使用BufferedReader读取File
    这篇文章主要介绍“如何使用BufferedReader读取File”,在日常操作中,相信很多人在如何使用BufferedReader读取File问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Buffe...
    99+
    2023-06-22
  • 使用Java如何获取进程的ID
    这期内容当中小编将会给大家带来有关使用Java如何获取进程的ID,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程I...
    99+
    2023-05-31
    java 进程 ava
  • 如何使用shell编程中的字符串截取
    本篇内容介绍了“如何使用shell编程中的字符串截取”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Gnu Linux shell 截取字...
    99+
    2023-06-09
  • 如何使用 Java 将 JSON 文件读取为字符串?这三种方法很管用!
    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它可以用来存储和传输结构化的数据。在 Java 中,有多种方法可以将 JSON 文件读取为字符串,本文将介绍其中的几种。 方法一:使用 ja...
    99+
    2023-09-30
    java jvm servlet
  • Java如何使用Socket正确读取数据姿势
    小编给大家分享一下Java如何使用Socket正确读取数据姿势,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言平时日常开发用得最多是Http通讯,接口调试也比较简单的,也有比较强大的框架支持(OkHttp)。个人平时用到...
    99+
    2023-06-25
  • Java中如何使用函数load来读取数组?
    在Java中,函数load被广泛应用于读取和写入数组。load函数可以将数组从文件中读取到内存中,也可以将内存中的数组写入到文件中。使用load函数,可以方便地将数组保存到文件中,以便在程序重新启动时读取。这篇文章将介绍Java中如何使用...
    99+
    2023-09-11
    函数 load 数组
  • Java中的数组如何使用函数load进行读取?
    Java中的数组是一种非常常见的数据结构,它可以存储一组相同类型的数据。在Java中,我们可以通过使用函数load来读取数组中的数据。在本文中,我们将会介绍Java中数组的基本知识,并且深入探讨如何使用函数load进行读取。 一、Java中...
    99+
    2023-09-11
    函数 load 数组
  • 如何使用JavaScript读取文件
    如何使用JavaScript读取文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。读取方法:1、用“readAs...
    99+
    2024-04-02
  • 如何使用python读取文件
    使用python读取文件的方法:1.使用open方式逐行读取;2.使用with方式逐行读取;3.使用read()函数读取文件的全部内容;具体方法如下:使用open方式逐行读取文件# 打开文件f = open("file.txt&q...
    99+
    2024-04-02
  • 如何使用ADO.NET读取数据
    小编给大家分享一下如何使用ADO.NET读取数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ADO.NET还是比较常用的,于是我研究了一下ADO.NET读取数据...
    99+
    2023-06-17
  • 如何使用 conn.read() 读取横幅
    各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《如何使用 conn.read() 读取横幅》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得...
    99+
    2024-04-05
  • 如何在 ASP.NET 应用程序中使用 Apache POI 读取和写入 Excel 文件?
    ASP.NET 是一个广泛使用的 Web 应用程序开发框架,而 Apache POI 是一个用于操作 Microsoft Office 格式文件的 Java 库。在本文中,我们将介绍如何在 ASP.NET 应用程序中使用 Apache PO...
    99+
    2023-07-18
    关键字 npm apache
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作