当前位置:  技术问答>java相关

java能否控制串口通讯?若能,如何实现?(急!30分)

    来源: 互联网  发布时间:2015-04-10

    本文导语:  java能否控制串口通讯?若能,如何实现?(急!30分) | /*  *  * IMU.java 1.0  * Main Program for Serial Communication  *  * Created: March 27, 2001  *  * Author : Qingye Jiang (John)  * American GNC Corpor...

java能否控制串口通讯?若能,如何实现?(急!30分)

|
/* 

* 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.*; 
import java.util.*; 
import javax.comm.*; 

class IMU 


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

public static void main(String[] args) 


try 


//Declare the serial port, and open it. 

portId = CommPortIdentifier.getPortIdentifier("COM1"); 
try 


serialPort = (SerialPort) portId.open("IMU_App", 2000); 

} catch (PortInUseException e) 


System.out.println(e.getMessage()); 



//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) 


System.out.println(e.getMessage()); 



//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) 


System.out.println(e.getMessage()); 



} catch (NoSuchPortException e) 


System.out.println(e.getMessage()); 



//Declare the serial buffer area, a thread to read from the seriial port, 
//a thread to read from the serial buffer for processing, and a thread 
//to write to the serial port. 

SerialBuffer SB = new SerialBuffer(); 
ReadSerial r1 = new ReadSerial(SB, in); 
ReadBuffer r2 = new ReadBuffer(SB); 
WriteSerial r3 = new WriteSerial(out); 


//Start all three threads. 

r1.start(); 
r2.start(); 
r3.start(); 





/* 

* SerialBuffer.java 1.0 
* Class that implements 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 

*/ 

public class SerialBuffer 


private String Content = ""; 
private String CurrentMsg, TempContent; 
private boolean available = false; 


//read a message from the serial buffer. The star character '*' is used 
//as the seperation mark between different messages. 

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; 



//Put a character to the serial buffer 

public synchronized void PutChar(int c) 


Character d = new Character((char) c); 
Content = Content.concat(d.toString()); 
if (c == '*') 

available = true; 

notifyAll(); 





|
/* 

* 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.*; 
import java.util.*; 
import javax.comm.*; 

class IMU 


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

public static void main(String[] args) 


try 


//Declare the serial port, and open it. 

portId = CommPortIdentifier.getPortIdentifier("COM1"); 
try 


serialPort = (SerialPort) portId.open("IMU_App", 2000); 

} catch (PortInUseException e) 


System.out.println(e.getMessage()); 



//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) 


System.out.println(e.getMessage()); 



//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) 


System.out.println(e.getMessage()); 



} catch (NoSuchPortException e) 


System.out.println(e.getMessage()); 



//Declare the serial buffer area, a thread to read from the seriial port, 
//a thread to read from the serial buffer for processing, and a thread 
//to write to the serial port. 

SerialBuffer SB = new SerialBuffer(); 
ReadSerial r1 = new ReadSerial(SB, in); 
ReadBuffer r2 = new ReadBuffer(SB); 
WriteSerial r3 = new WriteSerial(out); 


//Start all three threads. 

r1.start(); 
r2.start(); 
r3.start(); 





|
import javax.comm.*;
看看:
http://www-900.ibm.com/developerWorks/java/joy-comm/index.shtml

|
http://www.linuxaid.com.cn/support/showfom.jsp?i=2237

|
它山之玉---

转自BBS水木清华站Java讨论区 

利用Java实现串口全双工通讯 

qyjohn , 3月30日,2001年 

关键字: Java Comm API,串口,全双工通讯 

摘要: 
本文介绍一个利用Java Comm API (javax.comm)实现串口全双工通讯的简单程序 

本文介绍一个利用Java Comm API (javax.comm)实现串口全双工通讯的简单程序。这个程序首先打开并初始化一个串口,然后启动如下三个进程:ReadSerial进程从该串口读取数据并放入缓冲区,ReadBuffer进程从缓冲区读取数据并打印到屏幕, WriteSerial进程每5秒钟向该串口发送一个星号(*)。 

在这个示例程序中使用了一个简单的协议,既不同的消息之间用星号'*'作为分隔。缓冲区程序根据是否收到星号作为存在等待处理的消息的判断依据。 

Java Comm API不是标准的Java API,因此的标准的运行环境中并不提供这个包。如果你的系统上还没有安装这个包,你可以从SUN公司的网站下载。在这个包里面有一个安装指南,如果你没有正确安装这个包,可能你不能够正确运行这个例程。 

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

IMU.java (主程序) 
ReadBuffer.java (从缓冲区读取一个消息) 
ReadSerial.java (读取串口数据并放入缓冲区) 
SerialBuffer.java (缓冲区) 
WriteSerial.java (每5秒钟往串口送一个星号'*') 

测试程序: 

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

测试方法: 

1 正确安装Java Comm API后编译本例程 
2 将计算机的COM1和COM2用一条串口线连接起来 
3 运行IMU。如果你这时候打开Windows自带的超级终端并连接到COM2的话,你应该能够看见有星号出现在超级终端的屏幕上。超级终端的参数设置为9600, N, 8, 1, none。 
4 关闭超级终端,运行SendCom。这时候你应该能够从IMU的屏幕上看到数据文件里面的内容。 

    
 
 

您可能感兴趣的文章:

  • Linux 中用java语言写串口程序,提示找不到串口
  • LINUX串口JAVA编程问题
  • LINUX下的JAVA串口通讯问题,如能解决,不胜感激
  • Java串口开发包 RXTX
  • java中如何实现串口读写?
  • java 中如何使用串口?
  • 用java可以串口通信方面的程序吗?
  • linux下用java访问串口问题
  • 怎样用JAVA语言实现对串口的操作?
  • 关于java串口api
  • 寻求java对串口操作的帮助
  • 如何用java在linux中读写串口啊?请高手指点
  • 请问谁做过在linux下用java开发串口通信程序,所用第三方jar包是rxtx
  • java串口问题
  • 关于JAVA写串口,在UNIX下的问题
  • 请教Java中的串口和USB编程问题
  • 用java在RedHat Linux4.0下开发串口程序的环境配置问题
  • 如何用java读、写串口?
  • 有谁了解java 串口通讯的啊
  • 各路JAVA高手们,能否给我一个用JAVA写的简单聊天室代码?
  • 能否推荐几本学习Java的好教材呢?那一种Java的开发工具更好呢?
  • Linux下面的开发好的Java程序,如何部署到其他机器?开发好的Java图形程序,终端上能否用?等问题
  • Java能否写COM组件?
  • 能否介绍几本Java的好书
  • Java程序能否以后台方式运行?
  • 用java能否开发图形报表程序
  • java 对树的操作,TreeSet,能否插入相同的数据,如果相同,如何解决
  • 各位大虾,能否告知JAVA的核心思想
  • 不知到在JAVA中能否实现下列功能:
  • java能否动态开辟string数组?
  • oxfordxyc(石头) 能否给我也发一个java编写一个学籍管理系统,thx
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java NIO的通讯组件 Gecko-Java
  • java和c通讯的问题
  • 本机间java 和 c/c++怎么通讯?
  • JAVA主要用在哪方面:数据库、通讯、电子商务?
  • 急:java中如何与word通讯?
  • 一个java和vc通讯的socket问题求解,急
  • Java通讯包 Jackal
  • Java实现的SSH通讯包 JSch
  • Java的NIO通讯类库 KryoNet
  • 菜鸟问题:Java可以用来开发驱动程序吗,或者说通讯、接口?或者说是否合适?
  • java的网络功能类socket是作用于哪一层的,偶要写一个更底层的网络通讯程序,用到了APDU协议,用java能实现吗?偶其他的语言不熟!!!!
  • CGI与JAVA通讯问题,300分奉送!!!!!
  • Java多播通讯框架 JGroups
  • 浙ICP备11055608号-3 iis7站长之家
  • 使用TCP协议通讯,如果有很多种数据要传输,如:注册信息等,在C++中,我们可以使用结构,java中通常大家又是如何打包的呢?
  • 有关java与web服务器的通讯的问题
  • Java已成为手机通讯标准!谁试过?
  • Java通讯程序的中文问题?
  • Android 模拟器(JAVA)与C++ socket 通讯 分享
  • 想java通过socket和c++通讯,哪位有这方面资料或实例?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3