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

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

利用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);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航