首页 > 学院 > 开发设计 > 正文

利用Java实现串口全双工通讯 (转载)

2019-11-18 13:50:45
字体:
来源:转载
供稿:网友

  利用java实现串口全双工通讯 (投稿)

Qingye Jiang (John)
SMTH ID: qyjohn
E-mail : qjiang@tsinghua.edu

一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线
控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查
询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类
库,该类库大大的简化了对串口进行操作的过程。

本类库主要包括:SerialBean.java (与其他应用程序的接口), SerialBuffer.java
(用来保存从串口所接收数据的缓冲区), ReadSerial.java (从串口读取数据的程序)。
另外本类库还提供了一个例程SeriAlexample.java 作为示范。在下面的内容中将逐
一对这几个部分进行具体介绍。

1. SerialBean

SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方
法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。具体
介绍如下:

public SerialBean(int PortID)

本函数构造一个指向特定串口的SerialBean,该串口由参数PortID所指定。
PortID = 1 表示COM1,PortID = 2 表示COM2,由此类推。

public int Initialize()

本函数初始化所指定的串口并返回初始化结果。假如初始化成功返回1,否
则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置
为9600, N, 8, 1。假如串口被成功初始化,则打开一个进程读取从串口传
入的数据并将其保存在缓冲区中。

public String ReadPort(int Length)

本函数从串口(缓冲区)中读取指定长度的一个字符串。参数Length指定所返
回字符串的长度。

public void WritePort(String Msg)

本函数向串口发送一个字符串。参数Msg是需要发送的字符串。

public void ClosePort()

本函数停止串口检测进程并关闭串口。

SerialBean的源代码如下:

package serial;

import java.io.*;
import java.util.*;
import javax.comm.*;

/**
*
* This bean PRovides some basic functions to implement full dulplex
* information exchange through the srial port.
*
*/

public class SerialBean
{

static String PortName;
CommPortIdentifier portId;
SerialPort serialPort;
static OutputStream out;
static InputStream in;

SerialBuffer SB;
ReadSerial RT;

/**
*
* ConstrUCtor
*
* @param PortID the ID of the serial to be used. 1 for COM1,
* 2 for COM2, etc.
*
*/

public SerialBean(int PortID)
{
PortName = "COM" + PortID;
}

/**
*
* This function initialize the serial port for communication. It starts a
* thread which consistently monitors the serial port. Any signal captured
* from the serial port is stored into a buffer area.
*
*/

public int Initialize()
{

int InitSuccess = 1;
int InitFail = -1;

try
{

portId = CommPortIdentifier.getPortIdentifier(PortName);

try
{
serialPort = (SerialPort)
portId.open("Serial_Communication", 2000);


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表