- 浏览: 141448 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yanbin0830:
你好,请问有全部的视频,或者代码吗?
传智播客-----JBPM介绍 -
qqliuyuxi:
不错,对我很有用
php模板引擎smarty的变量操作符 -
pouyang:
prototype是不是 javascript中所说的原型链啊 ...
JavaScript:prototype属性使用说明
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()
本函数停止串口检测进程并关闭串口。
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 startss a
* thread which consistently monitors the serial port. Any signal capturred
* 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);
} catch (PortInUseException e)
{
return InitFail;
}
//Use InputStream in to read from the serial port, and OutputStream
//out to write to the serial port.
try
{
in = serialPort.getInputStream();
out = serialPort.getOutputStream();
} catch (IOException e)
{
return InitFail;
}
//Initialize the communication parameters to 9600, 8, 1, none.
try
{
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e)
{
return InitFail;
}
} catch (NoSuchPortException e)
{
return InitFail;
}
// when successfully open the serial port, create a new serial buffer,
// then create a thread that consistently accepts incoming signals from
// the serial port. Incoming signals are stored in the serial buffer.
SB = new SerialBuffer();
RT = new ReadSerial(SB, in);
RT.start();
// return success information
return InitSuccess;
}
/**
*
* This function returns a string with a certain length from the incomin
* messages.
*
* @param Length The length of the string to be returned.
*
*/
public String ReadPort(int Length)
{
String Msg;
Msg = SB.GetMsg(Length);
return Msg;
}
/**
*
* This function sends a message through the serial port.
*
* @param Msg The string to be sent.
*
*/
public void WritePort(String Msg)
{
int c;
try
{
for (int i = 0; i < Msg.length(); i++)
out.write(Msg.charAt(i));
} catch (IOException e) {}
}
/**
*
* This function closes the serial port in use.
*
*/
public void ClosePort()
{
RT.stop();
serialPort.close();
}
}
2. SerialBuffer
SerialBuffer是本类库中所定义的串口缓冲区,它定义了往该缓冲区中写入数据和从该缓冲区中读取数据所需要的函数。
public synchronized String GetMsg(int Length)
本函数从串口(缓冲区)中读取指定长度的一个字符串。参数Length指定所返回字符串的长度。
public synchronized void PutChar(int c)
本函数望串口缓冲区中写入一个字符,参数c 是需要写入的字符。
在往缓冲区写入数据或者是从缓冲区读取数据的时候,必须保证数据的同步,因此GetMsg和PutChar函数均被声明为synchronized并在具体实现中采取措施实现的数据的同步。
package serial;
/**
*
* This class implements the buffer area to store incoming data from the serial
* port.
*
*/
public class SerialBuffer
{
private String Content = "";
private String CurrentMsg, TempContent;
private boolean available = false;
private int LengthNeeded = 1;
/**
*
* This function returns a string with a certain length from the incomin
* messages.
*
* @param Length The length of the string to be returned.
*
*/
public synchronized String GetMsg(int Length)
{
LengthNeeded = Length;
notifyAll();
if (LengthNeeded > Content.length())
{
available = false;
while (available == false)
{
try
{
wait();
} catch (InterruptedException e) { }
}
}
CurrentMsg = Content.substring(0, LengthNeeded);
TempContent = Content.substring(LengthNeeded);
Content = TempContent;
LengthNeeded = 1;
notifyAll();
return CurrentMsg;
}
/**
*
* This function stores a character captured from the serial port to the
* buffer area.
*
* @param t The char value of the character to be stored.
*
*/
public synchronized void PutChar(int c)
{
Character d = new Character((char) c);
Content = Content.concat(d.toString());
if (LengthNeeded < Content.length())
{
available = true;
}
notifyAll();
}
}
3. ReadSerial
ReadSerial是一个进程,它不断的从指定的串口读取数据并将其存放到缓冲区中。
public ReadSerial(SerialBuffer SB, InputStream Port)
本函数构造一个ReadSerial进程,参数SB指定存放传入数据的缓冲区,参数Port指定从串口所接收的数据流。
public void run()
ReadSerial进程的主函数,它不断的从指定的串口读取数据并将其存放到缓冲区中。
package serial;
import java.io.*;
/**
*
* This class reads message from the specific serial port and save
* the message to the serial buffer.
*
*/
public class ReadSerial extends Thread
{
private SerialBuffer ComBuffer;
private InputStream ComPort;
/**
*
* Constructor
*
* @param SB The buffer to save the incoming messages.
* @param Port The InputStream from the specific serial port.
*
*/
public ReadSerial(SerialBuffer SB, InputStream Port)
{
ComBuffer = SB;
ComPort = Port;
}
public void run()
{
int c;
try
{
while (true)
{
c = ComPort.read();
ComBuffer.PutChar(c);
}
} catch (IOException e) {}
}
}
4. SerialExample
SerialExample是本类库所提供的一个例程。它所实现的功能是打开串口COM1,
对其进行初始化,从串口读取信息对其进行处理后将处理结果发送到串口。
import serial.*;
import java.io.*;
/**
*
* This is an example of how to use the SerialBean. It opens COM1 and reads
* six messages with different length form the serial port.
*
*/
class SerialExample
{
public static void main(String[] args)
{
//TO DO: Add your JAVA codes here
SerialBean SB = new SerialBean(1);
String Msg;
SB.Initialize();
for (int i = 5; i <= 10; i++)
{
Msg = SB.ReadPort(i);
SB.WritePort("Reply: " + Msg);
}
SB.ClosePort();
}
}
本类库中使用了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环境下编译通过并成功运行。
发表评论
-
视频html代码
2010-04-21 20:26 1042视频html代码 播放视频最实用的一段代码是: 程序代码&l ... -
<object>标签属性和用法
2010-04-21 15:08 2509快播的classid="clsid:F3D0D36F ... -
extjs record
2010-04-11 22:04 3908Ext.data.Store是EXT中用来 ... -
extjs获取 JSON数据的字段
2010-04-11 17:14 2235//获取json字符串中的一个值 我只会ExtJS中的方法: ... -
Ext的FormPanel刷新
2010-04-11 15:27 2177动态增加的代码如下: 在Form上面加入一个按钮: ... -
panel_load_刷新
2010-04-10 22:39 1769引用页刷新的问题不仅仅体现在TabPanel里,只要是带loa ... -
datasource 类
2010-04-07 21:55 920package org.leno.javabean; ... -
ext表单验证
2010-04-06 17:23 21152009-06-19 09:55 by 三把刷子, 604 v ... -
java多线程编程实例
2010-04-04 20:36 7530java多线程编程实例Java学练 2009-07-23 16 ... -
jsp 用urlrewrite 实现URL 重写
2010-04-03 11:52 862jsp 用urlrewrite 实现URL 重写 是否 ... -
Socket多线程最好的资料
2010-04-02 17:15 3010Java多线程Socket资料 ---- 摘要:在Jav ... -
JAVA 与 QQ 网络通讯实例
2010-04-02 12:50 1023JAVA 与 QQ 网络通讯实例 准备工作:1.两个QQ(Q ... -
extjs tree tabplanel
2010-04-01 18:14 2147在实际的项目中,左边树形菜单,提供各种功能点击,右边一个面板 ... -
ExtJS 2.2定时任务
2010-03-29 19:55 2544ExtJS 2.2定时任务 定时 ... -
学习ExtJS Window常用方法
2010-03-27 15:52 1277ExtJS Window常用方法,需要的朋友可以参考下。一、属 ... -
extjs form
2010-03-27 15:31 1175Ext Panel:设置Frame属性为true 收藏 对Ex ... -
extjs tree accortion
2010-03-25 19:18 926<html> <head> ... -
ExtJS事件
2010-03-25 18:07 1587ExtJS入门之事件(fireEvent) 关键字: java ... -
extjs
2010-03-24 19:51 658ext编辑表格 只需要在cm 加上 editor ... -
javascript的疑问????????????
2010-03-23 20:18 669<%@ page language="java ...
相关推荐
commapi基础 RS232基础 Win32&Linux;下串口编程的差异 串口实现全双工通讯的Java类库等共8个文件,全面掌握JAVA串口编程
Java串口编程
java串口编程实例 ConnDB.java
这个是一个java串口编程实例,里面的代码写了怎么连接串口,怎么接收数据等等。后面会有文档附上,一块下载下来看看就懂了,一定可以看懂,很简单。
详细的介绍了串口编程的集中模式,并且有详细的例子。
一个很实用的Java串口编程实例 有解说 附加一个Java手机串口短信发送的代码例子
RXTX java串口编程jar包RXTX java串口编程jar包RXTX java串口编程jar包RXTX java串口编程jar包RXTX java串口编程jar包RXTX java串口编程jar包
从最基础的串口通信介绍如何用java去实现,知道了串口通信的原理之后再用代码实现应该就是最简单的事情了吧
Java串口编程 - 介绍java串口实现方法
mac上的java串口编程包(github上也有)
Java串口编程例子(https://blog.csdn.net/wu_boy/article/details/112062071)
java串口编程基本归纳
java串口编程comm.jar 轻松操作串口
串口编程,java串口编程,Shell源码
java 串口编程使用demo,用起来很方便。 1、参考如下网址使用: http://blog.csdn.net/luoduyu/article/details/2182321
java 串口编程Demo,一看就懂。
java串口编程的实现,简单易懂,软件和硬件之间的接口问题
给大家分项下用RXTX库实现JAVA串口编程
JAVA串口编程.txt不知道大家用了这个效果怎么样!大家互相学习帮助!
描述JAVA串口编程时的配置步骤以及使用的相关jar包