java实现点对点通信.

java实现点对点通信.
java实现点对点通信.

用java实现的点对点通信程序的设计

通信0903班学号:姓名:指导老师:王国才、杨政宇

一设计目标:

1.使用Java高级面向对象编程语言编写一个网络聊天程序。

2.理解Socket的基本概念工作原理,掌握Socket的建立、监听、连接、发送数据和接收数据

3.环境要求:Windows95/98/2000/XP,WinSocke

4.能将键盘上输入的数据发送到另一台计算机上;

5.能将接收到的数据显示到屏幕窗口内;

6.类似于一般的主流网络即时聊天程序为了简化程序和系统结构,将“客户端——服务器——客户端”的数据传输方式改为“客户端——服务器”的模式。

7.程序应该具有图形界面,要具备聊天程序的基本雏形。

二设计原理与方法

1. TCP/IP协议的介绍

TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。

TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。许多用户熟悉使用TCP/IP协议的高层应用协议。包括万维网的超文本传输协议(HTTP),文件传输协议(FTP),远程网络访问协议(Telnet)和简单邮件传输协议(SMTP)。这些协议通常和TCP/IP协议打包在一起。使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到对方的调制解调器中。与TCP/IP协议相关的协议还包括用户数据报协议(UDP),它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet 控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP),边界网关协议(BGP)。

2.socket协议介绍

(1).什么是socket

Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。

具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。

(2).Socket程序的工作过程:

1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。

2、数据通信:利用虚拟连接通道传送数据信息进行通道。

3、关闭:通信结束时,再将所建的虚拟连接拆除。

具体如下:

服务器

三次握手:

第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧

第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。

第三此握手:源端机收到含有两次初始序列号的应答后,在向目的主机发送一个带有两次连接的序列号的确认。

具体过程如下:

(3).如何开发一个Server-Client模型的程序

开发原理:

服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使

用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话

后,关闭连接。

客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端

口,通常临时的、动态的分配一个1024以上的端口。

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

3. Java编程语言介绍

Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java 平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。

(1)java平台构架

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经

从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。

Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。

* Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。

* Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。

* Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

4、设计方法

总的设计思想是利用java里的套接字Socket和ServerSocket(客户/服务器)来建立进程之间的通信,Socket和ServerSocket类库位于https://www.360docs.net/doc/6712116138.html,包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。

getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。

getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

三设计功能

1、将键盘上输入的数据发送到另一台计算机上

2、能将接收到的数据显示到屏幕窗口内

3、能和不同的电脑建立连接

4、有简单美观的界面

开始

初始化各界面变量

界面设置

建立ServerSocket()

绑定Socket 进行监听

监听IP 收发数据

关闭连接

为空 不为空

开始

初始化各界面变量

界面设置

建立Socket()

输入IP 地址

连接IP 收发数据

关闭连接

连接不成功

连接不成功 服务端

客户端

服务器端

/**

* @(#)liaotian.java

* @author

* @version 1.00 2012/9/12

*服务器端

*/

package keshe.xiaoxue;

import javax.swing.*; //窗口工具包

import https://www.360docs.net/doc/6712116138.html,.*; //网络应用包

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*; //输入输出软件包

//implements AcionListene

class MyServer extends JFrame implements ActionListener{ JTextArea jta;

JTextField jtf;

JLabel pic1;

JLabel pic2;

JButton jb;

JScrollPane jsp;

JPanel jp1;

PrintWriter pw;

public static void main(String[] args)

{

MyServer msv=new MyServer();

}

public MyServer()

{

jta=new JTextArea();

jtf=new JTextField(20);

jsp=new JScrollPane(jta);

jb=new JButton("发送");

pic1= new JLabel(new ImageIcon("1.jpg"));

pic2= new JLabel(new ImageIcon("2.jpg"));

jb.addActionListener(this);

jp1=new JPanel();

this.add(pic1,"North");

this.add(jsp,"Center");

this.add(pic2,"East");

jp1.add(jtf);

jp1.add(jb);

this.add(jp1,"South");

this.setTitle("点对点通信(Server)");

this.setSize(430, 350);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭聊天窗口,即关闭程序,

this.setVisible(true); //窗口可见

try{

ServerSocket ss=new ServerSocket(8000); //服务器在8000端口监听

Socket s=ss.accept();//建立socket对象s,闭关将与客户端的连接封装成一个对象

InputStreamReader isr=new InputStreamReader(s.getInputStream());//新建并构造InputStreamReader对象,读入字节流

BufferedReader br=new BufferedReader(isr);//读入isr的文本文件,并放入缓冲区

pw=new PrintWriter(s.getOutputStream(),true);

while(true)

{

String info=br.readLine();//读取信息

jta.append("客户端对服务器说:"+info+"\r\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

public void actionPerformed(ActionEvent e) {//如果按下发送按钮// TODO Auto-generated method stub

if(e.getSource()==jb)

{

String info=jtf.getText();

jta.append("服务器对客户端说:"+info+"\r\n");

pw.println(info);

jtf.setText("");//清空发送文本框

}

}

}

客户端:

* @(#)client.java

* @author

* @version 1.00 2012/9/12

*/

package keshe.xiaoxue;

import java.util.Scanner;

import javax.swing.*;

import https://www.360docs.net/doc/6712116138.html,.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

class MyClient extends JFrame implements ActionListener { JTextArea jta;

JTextField jtf;

JButton jb;

JLabel pic1;

JLabel pic2;

JScrollPane jsp;

JPanel jp1;

PrintWriter pw;

public static void main(String[] args)

{

MyClient mct=new MyClient();

}

public MyClient()

{

jta=new JTextArea();

jtf=new JTextField(20);

jsp=new JScrollPane(jta);

jb=new JButton("发送");

pic1= new JLabel(new ImageIcon("1.jpg"));

pic2= new JLabel(new ImageIcon("2.jpg"));

jb.addActionListener(this);

jp1=new JPanel();

this.add(pic1,"North");

this.add(jsp,"Center");

this.add(pic2,"East");

jp1.add(jtf);

jp1.add(jb);

this.add(jp1,"South");

this.setTitle("点对点通信(Client)");

this.setSize(430, 350);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭聊天窗口,即关闭程序,

this.setVisible(true);//窗口可见

try{

Scanner sc1= new Scanner(System.in);

System.out.println("请输服务器的IP地址:");

String IPaddr = sc1.nextLine();

System.out.println("您输入的IP地址是:" + IPaddr);

Socket s=new Socket(IPaddr,8000);

InputStreamReader isr=new

InputStreamReader(s.getInputStream());

BufferedReader br=new BufferedReader(isr);

pw=new PrintWriter(s.getOutputStream(),true);

while(true)

{

String info=br.readLine();//读取从服务器发来的信息

jta.append("服务器对客户端说:"+info+"\r\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==jb)

{

String info=jtf.getText();

jta.append("客户端对服务器说:"+info+"\r\n");

pw.println(info);

jtf.setText("");//清空发送文本框

}

}

}

六测试数据及其结果

程序包括服务器端和客户端。

服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),本次使用的是8000端口号,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

服务器端的程序界面如下

客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个8000口。

客户端的程序界面如下:

运行时,先打开运行服务器程序,然后运行客户端程序,在客户端输入服务器的IP地址,然后就可以发送消息,进行聊天。对于服务起IP地址的获取按照如下方法

1. 单击“任务条”上的“启动”。

2. 选择“运行”。

3. 在运行中输入cmd,再回车。

4. 在cmd界面上输入ipconfig然后回车,就可以得到IP地址,子网掩码,默认网关。

要运行JAVA程序,需要两台电脑上都安装JAVA平台,有点麻烦,因此测试时可以输入保留的IP地址号127.0.0.1,在最后修改完善后再与别的电脑建立连接。

七总结体会

本次课程设计选择了用JAVA实现点对点通信的课题,虽然以前没学过JAVA,但我还是毫不犹豫地选择了这个颇具挑战性的题目,想借助这个机会有目地学习下这门语言。由于以前学过C语言,有一定的编程基础,通过一边看书本一边把书本上的程序一个个在电脑上实现,并且按照自己的想法修改,三天左右,就用法学通了最基础的语法。此时,借助书本和网络已经可以看懂别人的程序。在对JAVA的使用有了个大体的了解基础上,我就开始动手编写自己的程序。

动手之前我并不急于敲写代码。首先看书理解Socket的基本概念工作原理、socket的建立、监听、连接、发送数据和接收数据,然后看如何在JAVA中实现socket的建立、监听等;对核心的算法有了了解后我就开始构造自己的界面。用JAVA中的GUI编程实现界面的建立和美化,这比用C语言编写来得简单很多,但是在添加边框图片、如何合理地排列它们上还是花费了一番功夫。通过几天的修改,程序已经能够在自己电脑上运行,很是开心。由于刚开始所要连接的服务器的IP地址是在客户端的代码中输入的,运行时只能和一台电脑建立连接,想要和其它的电脑聊天时要在客户端代码中修改服务器的IP 地址,很是不方便。于是我就在客户端代码中调用System.in()函数,把服务器IP地址改为从键盘输入,这样就大大增加了代码的通用性。在两台电脑上调试成功后,我发现界面的建立那一段代码有点繁琐,于是又做了一番修改,删除不必要的语句,减少了代码的存储空间。至此,课程设计暂时结束,开始整理和总结。

在课设中,个人认为最重要的就是要动手做。不要因为不懂JAVA就不断抱怨,不要想把所有的步骤都在心里计算清楚后再动手做,更不要因为出现出现错误、编译不过就放弃。编程在于动手做,不断尝试,不断修改,不断进步;人生之路也是这样,不断着手实现心中的想法,不断尝试,不断修改,然后不断进步。

两个星期下来,把以前分散学习的计算机网络技术知识点系统地复习与应用了一遍,并且能具体的用到了简单的网络连接的实际问题中去,编出了简单的点对点聊天器。看到电脑上出现的聊天记录,心里的喜悦是无以言表的。

八参考文献

1施荣华王国才编著《计算机网络技术与应用》中国铁道出版社 2009

2.马皓编著《Java语言与面向对象程序设计》清华大学出版社

3.杨佩理周洪斌编著《Java程序设计基础教程》机械工业出版社 2012

实验二 socket下点对点通信的实现

实验二 Socket下的点对点通信的实现 一、实验目的 理解Socket的基本概念工作原理,掌握Socket的建立、监听、连接、发送数据和接收数据。 二、实验内容 采用Java(c++)语言编写网络上的点对点的Socket程序。该程序必须能在服务器端实现监听连接请求,客户端实现发送连接请求的功能,在建立连接后进行发送和接收数据的功能。三、实验要求 实验课时为4学时。要求完成在服务器端和客户端的源程序的编写,并作出分析。 具体要求如下: 1、服务器端建立一个Socket,设置好本机的IP和监听的端口与Socket进行绑定,开始监听连接请求,当接收到连接请求后,发出确认,同客户端建立连接,开始与客户端进行通信。 2、客户端建立一个Socket,设置好服务器端的IP和提供服务的端口,发出连接请求,在收到服务器的确认后,建立连接,开始与服务器端进行通信。

3、服务器端和客户端的连接及它们之间的数据传送均采用同步方式。 socket 的基本概念 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向连路的一端成为一个Socket。Socket通常用来实现客户方和服务方的连接。它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。在Java等语言中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。

Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A 的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。 假设第二个程序被加入图1的网络的Host B中,那么由Host A传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留Socket中的输入/输出信息,端口号是一个16位无符号整数,范围是0-65535,以区别主机上的每一个程序,低于256的端口号保留给标准应用程序,比如pop3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体就可以区别每一个套接字。 无论一个socket通信的功能多么齐全,程序多么复杂,其 基本结构都是一样的,都包括以下四个步骤: 1、创建socket; 2、打开连接到socket的输入输出流; 3、按照一定的协议对socket进行读写操作;

局域网点对点通信软件设计与实现

《网络编程技术》 课程设计报告 课程设计题目:局域网点对点通信软件与实现作者所在系部:计算机科学与工程系 作者所在专业:网络工程 作者所在班级: 作者姓名: 作者学号: 指导教师姓名: 完成时间: 2013年07月10日

课程设计任务书

摘要 所谓网络中的点对点通信是实现网络上不同计算机之间,不经过任何中继设备而直接交换数据或服务的一种技术。由于允许网络中任何一台计算机可以直接连到网络中的其他计算机,并与之进行数据交换,这样既可以消除中间环节,也使得网络上的沟通变的更加容易、更加直接。本文介绍的是一种是用Winsock编程技术,基于TCP/IP协议的、面向连接的流式套接字网络通信编程设计。 局域网即时通讯软件使用TCP协议作为传输层的协议,采用点对点模式服务,不需要服务器支持,使局域网用户的使用更加方便和高效。它可以实现局域网用户的自动检测,用户间文本信息的交流,文件的传输等功能。 本系统使用Visual Studio 2010作为开发工具,将.NET中的一些技术运用到系统中关键词:点对点;TCP/IP;Socket;UDP;P2P

目录 摘要 (2) 目录 (3) 第1章绪论 (4) 1.1课题研究现状分析 (4) 1.2选题的目的及意义 (4) 第2章系统需求分析 (5) 2.1 问题的提出 (5) 2.2 系统的设计目标 (5) 第3章系统总体设计 (6) 3.1系统功能设计 (6) 3.2功能模块的说明 (7) 3.2.1初始化(广播用户信息) (7) 3.2.2用户列表管理 (7) 3.2.3文本信息传输 (7) 3.2.4文件传输 (7) 3.2.5发送心跳包 (7) 第4章系统实现 (8) 4.1初始化模块的设计和实现 (8) 4.1.1监听端口 (8) 4.2 广播消息 (8) 4.3 文本消息的发送和接收 (9) 4.4 文件的发送和接收 (12) 4.5发送心跳包 (14) 第5章课程设计总结 (16) 5.1 主要问题及解决办法 (16) 5.2 课程设计体会 (16) 5.3 自我评定 (16) 参考文献 (17)

java串口编程,java串口通信,监听者模式解析

java调用coms端口串口通信的方法。 首先需要下到串口驱动。javacomm20-win32.zip 去sun的主页应该有下的。 在这个驱动中有comm.jar,https://www.360docs.net/doc/6712116138.html,m.properties,win32com.dll 这么3个重要的文件。 1、首先配置驱动,把https://www.360docs.net/doc/6712116138.html,m.properties,win32com.dll拷贝到你的jdk 中 具体位置为C:\Program Files\Java\jdk1.6.0_06\bin 然后配置windows系统环境变量,在path中加入C:\Program Files\Java\jdk1.6.0_06\bin; 打开你的java工程,配置user library,并导入comm.jar包。 2、现在就可以开始写代码了。串口读写代码如下 CommPortIdentifier portID = CommPortIdentifier.getPortIdentifier(com);//1,先拿到Identifier //其中com是String类型的,传入的是串口名com="COM1"; SerialPort port = (SerialPort)portID.open("MyComm", 100000000);//2,打开串口 //"MyComm"是串口名,100000000是串口过期时间(ms)。 port.setSerialPortParams(rate, databits,stopbit, parity);//3,设置串口属性 //rate 波特率(默认9600),databits载波位(默认8),stopbit停止位(默认1),parity校验位(默认0无校验) port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);//4(可选)设置数据流控制模式,默认为无 port.close();//关闭串口 3、串口读入写出流。

基于STC89C51的CAN总线点对点通信模块设计

基于STC89C51的CAN总线点对点通信模块设计 [导读]随着人们对总线对总线各方面要求的不断提高,总线上的系统数量越来越多,继而出现电路的复杂性提高、可靠性下降、成本增加等问题。为解决上述问题,文中阐述了基于SJAl000的CAN总线通信模块的实现方法,该方法以PCA82C250作为通信模块的总线收发器,以SITA-l000作为网络控制器。并以STCSTC89C5l单片机来完成基于STC89C5l的CAN通信硬件设计。文章还就平台的初始化、模块的发送和接收进行了设计和分析。通过测试分析证明,该系统可以达到CAN的通信要求,整个系统具有较高的实用性。 0 引言 现场总线是应用在生产最底层的一种总线型拓扑网络,是可用做现场控制系统直接与所有受控设备节点串行相连的通信网络。在工业自动化方面,其控制的现场范围可以从一台家电设备到一个车间、一个工厂。一般情况下,受控设备和网络所处的环境可能很特殊,对信号的干扰往往也是多方面的。但要求控制则必须实时性很强,这就决定了现场总线有别于一般的网络特点。此外,由于现场总线的设备通常是标准化和功能模块化,因而还具有设计简单、易于重构等特点。 1 CAN总线概述 CAN (Controller Area Network)即控制器局域网络,最初是由德国Bosch公司为汽车检测和控制系统而设计的。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。其良好的性能及独特的设计,使CAN总线越来越受到人们的重视。由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。目前,CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。它的直线通信距离最大可以达到l Mbps/30m.其它的节点数目取决于总线驱动电路,目前可以达到110个。 2 CAN系统硬件设计 图1所示是基于CAN2.0B协议的CAN系统硬件框图,该系统包括电源模块、MCU部分、CAN控制器、光电耦合器、CAN收发器和RS232接口。硬件系统MCU采用STC89C5l,CAN控制器采用SJAl000,CAN收发器采用PCA82C250,光耦隔离采用6N137。

java串口通信程序(程序及注释)-13页word资料

Java的串口通信程序 首先需要到到sun主页下载串口通信的包,因为一般的jrd中不含有这个包的,有点补丁的意思。(CSDN上也有)。解压缩,为了使Java Communications API能够正确的与Windows系统交互,需要几个小的技巧。下面是三个很重要的文件,你可以从Sun的网站上下载得到 comm.jar win32com.dll javaxm.properties 对于JVM来说,要正确的识别串口,将这几个文件放在系统中合适的位置使很重要的。 comm..jar应该放在以下目录中 %JAVA_HOME%/lib %JAVA_HOME%/jre/lib/ext win32com.dll应该放在以下目录中 %windir%system32 javax.properties应该放在以下目录中 %JAVA_HOME%/lib

%JAVA_HOME%/jre/lib 你可以通过编译和运行Sun的例程来验证串口是否可以使用了。 JBuilder中安装安装Java Communication API (以下在JBuilder 2006中测试通过) 如果你使用JBuilder,那么还需要为JBuilder配置API。 一般来说,根据你的JBuilder配置,你也许需要将win32com.dll和javax.properties安装到相应的目录中,可以参照上述的目录。例如,如果你使用JBuilder附带的JVM的话,你也许需要将win32com.dll和javax.properties放到C:\Borland\JBuilder2006\jdk1.5的相应位置。 我使用的是JCreator,在打开Configure,然后点击option,选中jdk profile然后双击选中的jdk文件,选择edit,在弹出的窗口中选择串口通信包所在的文件(.jar文件),这样配置就算完成了。 以下分别是接收和发送程序,CSDN上搜的,省的自己写了:发送程序: import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*;

java串口通讯程序

java串口通讯程序 1、下载java Communications api开发包。| 是Sun公司提供的,用于开发平台独立的通讯应用程序的扩展API。 2、将拷贝入C:\j2sdk1.4.2_04\bin 3、将拷贝入C:\j2sdk1.4.2_04\jre\lib\ext 4、将拷贝入C:\j2sdk1.4.2_04\jre\lib 5、编译文件 import .*; import .*; import .*; public class CommTest{ public static void main(String[] args){ SerialPort serialPort=null; DataOutputStream doutput=null; InputStream inputStream; CommPortIdentifier portId=null; String messageString="hello \n"; try{ portId=("COM1"); }catch(NoSuchPortException ne) { "ne"); (); } try{ serialPort=(SerialPort) ("TestComm", 5); OutputStream output = (); doutput=new DataOutputStream(output); inputStream = (); }catch(PortInUseException ex) { "ex"); (); }catch(IOException ie) { "ie"); (); //(); } try { (9600, , , ; } catch (UnsupportedCommOperationException e) {} } try { ()); } catch (IOException e) {}

远距离点对点数字通信系统设计大学论文

通信原理三级项目 班级:姓名: 学号: 指导教师: 教务处

远距离点对点数字通信系统设计 (燕山大学信息科学与工程学院) 摘要:本文讨论进行了远距离点对点数字通信系统的设计,着重讨论了模拟信号数字化的过程,其中包含了为了提高系统性能进行的信源编码技术和信道编码技术,我采用了HDB3码克服连0问题,利用奇偶监督码和差错重传机制控制误码率。另外,讨论了数字调制技术的实现,本文采用最小频移键控调制和解调技术,并讨论了在高斯白噪声信道条件下的此方法的可靠性和有效性。 关键词:脉冲编码调制,HDB3码,奇偶监督码,MSK调制,高斯白噪声,MATLAB仿真

目录 1.通信系统概述 (3) 1.1一般通信系统模型 (3) 1.2数字通信系统模型 (3) 1.3远距离语音通信系统 (4) 2.信号数字化 (4) 2.1信号的抽样 (4) 2.1.1抽样定理 (4) 2.1.2脉冲幅度调制PAM (5) 2.2信源编码 (6) 2.2.1十三折线法 (6) 2.2.2脉冲编码调制PCM (7) 2.3信道编码 (9) 2.3.1 HDB3码 (9) 2.3.2奇偶监督码 (9) 3.调制与解调 (10) 3.1 MSK调制 (10) 3.1.1 MSK调制原理 (10) 3.1.2 MSK调制 (11) 3.2 MSK解调 (12) 4.信道描述 (13) 5.系统总体设计 (14) 附录MATLAB实现代码 (14)

1.通信系统概述 1.1一般通信系统模型 一般作为一个通信系统都由发送端和接收端两部分组成,而发送端则分为信息源和发送设备两部分,接收端与其对应的有接收端和受信者两部分,发送端和接收端之间则是我们信号传输所需要经过的信道,信号在信道中传输时会有噪声的混入,这也是我们的通信系统性能讨论的终点。 图1-1 一般通信系统 信息源是把各种原始消息转换成原始电信号的设备,它通过各种物理转换的方法从自然界中采集信息并把它们转换成相应的电信号,从而便于我们通过电子设备对其进行进一步的处理。受信者则是把接受到的电信号还原成自然界中信息的设备。 发送设备是通过对采集到的原始电信号进行一系列的处理把它变成适合于远距离传输的信号。在模拟传输系统中包括放大、滤波、模拟调制等过程;在数字传输系统中则包含编码、加密、数字调制等过程。接收设备则是上述过程的逆过程,将信道中传输的信号还原成易于处理的直接电信号。 信道是从发送设备到接收设备之间信号传输的物理煤质,分为无线信道和有限信道两大类,每种信道的特点不同,应用场合也不相同。 噪声源是笼统的一个说法,它集中表示分布于通信系统中的各处的噪声。 1.2数字通信系统模型 数字通信系统是通过数字信号来传递信息的通信系统。需要注意的是,这并不代表用于在信道中传输的信号就是数字信号,数字通信系统是通过数字信号来表示要传送的信息,而在传输过程中则还是利用高频调制的模拟信号传输。 图1-2 数字通信系统

基于SIMULINK的通信系统仿真毕业设计

题目基于SIMULINK的通信系统仿真 摘要 在模拟通信系统中,由模拟信源产生的携带信息的消息经过传感器转换成电信号,模拟基带信号在经过调制将低通频谱搬移到载波频率上适应信道,最终解调还原成电信号;在数字传输系统中,数字信号对高频载波进行调制,变为频带信号,通过信道传输,在接收端解调后恢复成数字信号。本文应用了幅度调制以及键控法产生调制与解调信号。 本论文中主要通过对SIMULINK工具箱的学习和使用,利用其丰富的模板以及本科对通信原理知识的掌握,完成了AM、DSB、SSB、2ASK、2FSK、2PSK三种模拟信号和三种数字信号的调制与解调,以及用SIMULINK进行设计和仿真。首先我进行了两种通信系统的建模以及不同信号系统的原理研究,然后将学习总结出的相应理论与SIMULINK中丰富的模块相结合实现仿真系统的建模,并且调整参数直到仿真波形输出,观察效果,最终对设计结论进行总结。 关键词通信系统调制 SIMULINK I

目录 1. 前言 (1) 1.1选题的意义和目的 (1) 1.2通信系统及其仿真技术 (2) 3. 现代通信系统的介绍 (3) 3.1通信系统的一般模型 (3) 3.2模拟通信系统模型和数字通信系统模型 (3) 3.2.1 模拟通信系统模型 (3) 3.2.2 数字通信系统模型 (4) 3.3模拟通信和数字通信的区别和优缺点 (5) 4. 通信系统的仿真原理及框图 (8) 4.1模拟通信系统的仿真原理 (8) 4.1.1 DSB信号的调制解调原理 ...................... 错误!未定义书签。 4.2数字通信系统的仿真原理 (9) 4.2.1 ASK信号的调制解调原理 (9) 5. 通信系统仿真结果及分析 (11) 5.1模拟通信系统结果分析 (11) 5.1.1 DSB模拟通信系统 (11) 5.2仿真结果框图 (11) 5.2.1 DSB模拟系统仿真结果 ........................ 错误!未定义书签。 5.3数字通信系统结果分析 (12) 5.3.1 ASK数字通信系统 (13) 5.4仿真结果框图 (13) 5.4.1 ASK数字系统仿真结果 (13) III

Java串口通信编程指南

Java串口通信编程指南

1. 概述 在java中,利用Java Communication包可以操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,不过在XP下还能使用。另外,也可以用开源的Rxtx实现串口通信,这里仅以Java Communication包,在Windows 平台实现串口通信进行说明。 2. 前期准备 2.1. 下载Java Communication包 ?下载地址如下:https://www.360docs.net/doc/6712116138.html,/Jolt/javacomm20-win32.zip。 ?如果是非Windows平台,请到Sun网站选择其他版本下载。地址如下: https://www.360docs.net/doc/6712116138.html,/download/products.xml?id=43208d3d 2.2. 配置 ?解压缩javacomm20-win32.zip ?把win32com.dll拷贝到{JAVA_HOME}\jre\bin ?把comm.jar拷贝到{JAVA_HOME}\jre\lib\ext ?把https://www.360docs.net/doc/6712116138.html,m.properties拷贝到{JAVA_HOME}\jre\lib ?set CLASSPATH={JAVA_HOME}\jre \lib\ext \comm.jar;%classpath%

3. 实现过程 主要步骤包括: ?获得串口标识 ?打开串口 ?设置串行端口通讯参数 ?获取输入(出)流 ?进行读写操作 3.1. 获得串口标识 指定串口的端口号,生成串口的标识类的实例。 https://www.360docs.net/doc/6712116138.html,mPortIdentifier是通讯端口管理器,控制访问到通讯端口的中心类。一个应用程序首先使用CommPortIdentifier中的方法,通过相关的驱动去获取那些通讯端口是可用的并且选择一个端口便于开始。它包括如下功能: a. 通过驱动决定通讯端口是可用的。 b. 打开通讯端口为了I/O操作。 c. 决定端口的拥有者。 d. 解析端口拥有者的争夺。 e. 管理事件显示在端口拥有者的中的状态改变。 示例代码如下: 代码: 3.2. 打开串口 示例代码如下: 代码:

点对点通信实验步骤2017

基于CAsyncSocket类的点对点通信客户机创建流程 ●通信流程: 1.服务器点击“监听”按钮开始监听,实现Create和Listen函数 2.客户机点击“连接”按钮进行连接,实现Connect函数 3.服务器端接受连接,并触发onAccept事件,实现函数Aeecpt 4.客户端或者服务器端点击“发送”按钮,发送文本框的数据 5.服务器端或者客户端接收数据,OnReveive事件被触发,实现函数Receive 6.客户端或者服务器端点击“断开”,执行函数close,触发另一端的onClose 事件 自定义类获取对话框指针的方法 1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg; 2在OnInitDialog()初始化的时候,pDlg = this; 3.在自定义类使用的时候,在自定义的类的Cpp中添加extern CMyDialog* pDlg; 4.在自定类中使用pDlg->yourfunction(); ●编程过程: 客户端: 1、创建MFC应用程序,勾选windows socket选项,如创建工程名为client,自动创建类 CClientAPP和CClientDlg,并生成相应的源文件(.cpp)和头文件(.h)。APP代表应用程序。 Dlg代表对话框 2、布置界面如下图所示

3、建立类向导,给文本编辑框,列表框定义变量名及类型 4、插入基于CAsyncSocket的类,如取名clientsock,确定后类视图下右键单击类并载入虚函数onReceive(),onClose(),如果是服务器端还要加载onAccept 5、程序的各个类之间建立联系,具体步骤: 5.1对话框界面与套接字建立连接。在ClientDlg.h文件中将“clientsock.h”文件包含进来,使其能够访问套接字,代码为#include”clientsocket.h”;并添加成员变量m_clientsock,代码clientsock m_clientsock;

点对点数字通信系统设计说明

通信原理三级项目 班级:通信工程2班 姓名: 学号: 指导教师: 教务处 2016年 5月

远距离点对点数字通信系统设计 (燕山大学信息科学与工程学院) 摘要:本文讨论进行了远距离点对点数字通信系统的设计,着重讨论了模拟信号数字化的过程,其中包含了为了提高系统性能进行的信源编码技术和信道编码技术,我采用了HDB3码克服连0问题,利用奇偶监督码和差错重传机制控制误码率。另外,讨论了数字调制技术的实现,本文采用最小频移键控调制和解调技术,并讨论了在高斯白噪声信道条件下的此方法的可靠性和有效性。 关键词:脉冲编码调制,HDB3码,奇偶监督码,MSK调制,高斯白噪声,MATLAB 仿真

目录 1.通信系统概述 (3) 1.1一般通信系统模型 (3) 1.2数字通信系统模型 (4) 1.3远距离语音通信系统 (4) 2.信号数字化 (5) 2.1信号的抽样 (5) 2.1.1抽样定理 (5) 2.1.2脉冲幅度调制PAM (5) 2.2信源编码 (7) 2.2.1十三折线法 (7) 2.2.2脉冲编码调制PCM (9) 2.3信道编码 (10) 2.3.1 HDB3码 (10) 2.3.2奇偶监督码 (11) 3.调制与解调 (11) 3.1 MSK调制 (11) 3.1.1 MSK调制原理 (12) 3.1.2 MSK调制 (13) 3.2 MSK解调 (14) 4.信道描述 (15) 5.系统总体设计 (16) 附录 MATLAB实现代码 (17)

1.通信系统概述 1.1一般通信系统模型 一般作为一个通信系统都由发送端和接收端两部分组成,而发送端则分为信息源和发送设备两部分,接收端与其对应的有接收端和受信者两部分,发送端和接收端之间则是我们信号传输所需要经过的信道,信号在信道中传输时会有噪声的混入,这也是我们的通信系统性能讨论的终点。 图1-1 一般通信系统 信息源是把各种原始消息转换成原始电信号的设备,它通过各种物理转换的方法从自然界中采集信息并把它们转换成相应的电信号,从而便于我们通过电子设备对其进行进一步的处理。受信者则是把接受到的电信号还原成自然界中信息的设备。 发送设备是通过对采集到的原始电信号进行一系列的处理把它变成适合于远距离传输的信号。在模拟传输系统中包括放大、滤波、模拟调制等过程;在数字传输系统中则包含编码、加密、数字调制等过程。接收设备则是上述过程的逆过程,将信道中传输的信号还原成易于处理的直接电信号。 信道是从发送设备到接收设备之间信号传输的物理煤质,分为无线信道和有限信道两大类,每种信道的特点不同,应用场合也不相同。 噪声源是笼统的一个说法,它集中表示分布于通信系统中的各处的噪声。

Java串口通信详解

Java串口通信详解 序言 说到开源,恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。这也难怪,毕竟就像某个著名NBA 球员说的那样:“我还要养家,所以千万美元以下的合同别找我谈,否则我宁可待业”。是啊,支持开源的人也要养家,收点钱也不过分。要想既不花钱又学到知识就只能借助网络和了,我只是想抛砖引玉,为开源事业做出点微薄共献,能为你的工程解决哪怕一个小问题,也就足够了。 虽然我的这个系列介绍的东西不是什么Web框架,也不是什么开源服务器,但是我相信,作为一个程序员,什么样的问题都会遇到。有时候越是简单的问题反而越棘手;越是小的地方就越是找不到称手的家伙。只要你不是整天只与“架构”、“构件”、“框架”打交道的话,相信我所说的东西你一定会用到。 1串口通信简介 1.1常见的Java串口包 1.2串口包的安装(Windows下) 2串口API概览 https://www.360docs.net/doc/6712116138.html,mPort https://www.360docs.net/doc/6712116138.html,mPortIdentifier https://www.360docs.net/doc/6712116138.html,m.SerialPort 2.4串口API实例 2.4.1列举出本机所有可用串口 2.4.2串口参数的配置 2.4.3串口的读写 3串口通信的通用模式及其问题 3.1事件监听模型 3.2串口读数据的线程模型 3.3第三种方法 4结束语 1串口通信简介 嵌入式系统或传感器网络的很多应用和测试都需要通过PC机与嵌入式设备或传感器节点进行通信。其中,最常用的接口就是RS-232串口和并口(鉴于USB接口的复杂性以及不需要很大的数据传输量,USB接口用在这里还是显得过于奢侈,况且目前除了SUN有一个支持USB 的包之外,我还没有看到其他直接支持USB的Java类库)。SUN的CommAPI分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。RS-232-C(又称EIA RS-232-C,以下简称RS232)是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。RS232是一个全双工的通讯协议,它可以同时进行数据接收和发送的工作。 1.1 常见的Java串口包 目前,常见的Java串口包有SUN在1998年发布的串口通信API:comm2.0.jar(Windows 下)、comm3.0.jar(Linux/Solaris);IBM的串口通信API以及一个开源的实现。鉴于在Windows下SUN的API比较常用以及IBM的实现和SUN的在API层面都是一样的,那个开源的实现又不像两家大厂的产品那样让人放心,这里就只介绍SUN的串口通信API在Windows 平台下的使用。 1.2 串口包的安装(Windows下) 到SUN的网站下载javacomm20-win32.zip,包含的东西如下所示:

北京理工大学-计算机网络实践-WinSock点对点通信实验报告

实验一 WinSock点对点通信程序 一、实验目的: WinSock是Windows操作系统下的Socket编程接口,通过WinSock函数库可以实现基于TCP/IP协议的进程之间通信。 ●理解基于WinSock的客户/服务器概念 ●掌握使用WinSock进行编程的方法 ●了解常见WinSock开发模式的使用 二、实验内容: 基于WinSock开发一个简单的客户/服务器文本传输程序,客户端能够发送由标准输入得到的文本,服务器能够接收并将其显示在标准输出上。 三、实验环境: 程序运行环境为以太网,采用TCP/IP协议栈,网络操作系统为Windows。程序开发环境为vs2012版本。 四、实验步骤: 步骤1 需求分析 程序功能为: (1)服务器可以接受任何客户的连接 (2)服务器在同一时刻只能与一个客户通信,直到该客户退出才可以接收下一个客户 (3)客户程序使用命令行参数指定服务器地址 (4)客户端输入的文本都发送给服务器 (5)客户使用Ctrl+C键停止发送,关闭连接 步骤2 服务器程序: 定义全局变量: SOCKET Server; // 服务器端套接字 SOCKADDR_IN Client_Addr; // 请求用户的Ip地址 SOCKET Sock_Conn; // 是否建立连接成功

char Buff_Recv[1024]; // 接收字符缓冲 char Buff_Send[1024]; // 发送字符缓冲区 服务器端主程序及用到的相关函数: void SLoad(); // 加载套接字库 void SCreate(); // 创建套接字 void SBind(); // 绑定套接字到一个IP地址和一个端口上 void SListen(); // 将套接字设置为监听模式等待连接请求 void SAccept(); /* 请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字 */ void SClose(); // 关闭套接字 void SUnLoad(); // 卸载套接字库 void Receive(); // 接受请求 void Send(); // 服务器段发送字符串到客户端 主函数: int main(int argc, char* argv[]) { … /* 循环查询 */ while(1) { SLoad(); SCreate(); SBind(); SListen(); SAccept(); Receive(); SClose(); SUnLoad(); }

基于51单片机的多机通信系统设计

单片机多机通信系统 一、引言 随着单片机技术的不断发展,单片机的应用已经从单机向多机互联化方向发展。单片机在实时数据采集和数据处理方面,有着成本低、能满足一般要求、开发周期短等优点,其在智能家居、计算机的网络通信与数据传输、工业控制自动化等方面有着广泛的应用。 本系统是面向智能家居应用而设计的。在初期,采用红外无线通信方式,其传输距离短,适于一般家庭应用,且成本相对较低;待方案成熟、成本允许,可以改用GSM无线通信方式。 二、系统原理及方案设计 1 、系统框架介绍 本系统为基于51单片机的多机红外无线通信系统,由三个51单片机模块组成。其中一个作为主机(即上位机),负责接收来自从机1(即下位机)采集的数据信息,以及向从机2(即下位机)发送控制信息。从机1是数据采集模块,采集温度、光强等室内数据,并将其发送给主机。主机经分析处理,作出相应判断,并给从机2发送控制信息,使由从机2控制的电机作出相应反应,调节室内环境状况。 系统总体框图如下图1所示,图2为红外收发模块简图:

图1 系统总体框图 图2 红外收发模块简图 2 、多机通信原理介绍 在多机通信系统中,要保证主机与从机间可靠的通信,必须要让通信接口具有识别功能,51单片机串行口控制寄存器SCON中的控制位SM2正是为了满足这一要求而设置的。当串行口以方式2或方式3工作时,发送或接收的每一帧信息都是11位的,其中除了包含SBUF 寄存器传送的8位数据之外,还包含一个可编程的第9位数据TB8或RB8。主机可以通过对TB8赋予1或0,来区别发送的是数据帧还是地址帧。 根据串行口接收有效条件可知,若从机的SCON控制位SM2为1,则当接收的是地址帧时,接收数据将被装入SBUF并将RI标志置1,

Java串口通信编程指导

Java串口通信编程指导 Java串口通信编程

概述 在java中,利用Java Communication包能够操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,只是在XP下还能使用。另外,也能够用开源的Rxtx实现串口通信,那个地点仅以Java Communication包,在Windows平台实现串口通信进行讲明。 前期预备 下载Java Communication包 下载地址如下:https://www.360docs.net/doc/6712116138.html,/Jolt/javacomm20-win32.zip。 配置 解压缩javacomm20-win32.zip 把win32com.dll拷贝到{JA V A_HOME}\jre\bin 把comm.jar拷贝到{JA V A_HOME}\jre\lib\ext set CLASSPATH={JA V A_HOME}\jre \lib\ext \comm.jar;%classpath%

实现过程 要紧步骤包括: 获得串口标识 打开串口 设置串行端口通讯参数 猎取输入(出)流 进行读写操作 获得串口标识 指定串口的端口号,生成串口的标识类的实例。 a. 通过驱动决定通讯端口是可用的。 b. 打开通讯端口为了I/O操作。 c. 决定端口的拥有者。 d. 解析端口拥有者的争夺。 e. 治理事件显示在端口拥有者的中的状态改变。示例代码如下: 代码: 打开串口 示例代码如下: 代码:

5000(毫秒)是超时时刻。 设置串行端口通讯参数 设置串口传输的波特率、数据位、停止位、奇偶校验等参数。 示例代码如下: 代码: try { // 通信条件の設定 // 通信速度 9600 baud // データビット 8bit // ストップビット 1bit // パリティなし // フローコントロールの設定 // 無制御を使用 port.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); } catch (UnsupportedCommOperationException ex) { ex.printStackTrace(); System.exit(1); } 猎取输入(出)流 利用getInputStream()以及getOutputStream()从每个串口产生对应的输入输出流对象。 示例代码如下: 代码:

一个通过JAVA串口通信控制LED显示数据的实例

一个通过java串口通信控制LED显示数据的实例 在很多应用程序中都需要用到pc机与外部设备如:嵌入式系统、传感器、开关 设备等进行数据通讯。其中,最常用的接口就是RS-232串口和并口。SUN的 CommAPI分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。 至于java串口通讯的配置以及通讯模式在sun的demo以及网上都有很多具体的 实例。 下面是我在开发一个叫号功能模块时通过串口通信来控制LED显示的实例,由于 第一次进行相关的开发,看似一个非常简单的功能在实际开发中却遇到了一些问 题,希望本人的解决方式能够对大家有所帮助,也希望大家能够提出更好的解决 方式。 先看一下LED显示屏厂商提供的通讯协议: ---遥控单双色、单双行、混合屏 一、每一次对任一特定地址发送信息由内码帧(7f/7e),数码帧 (6f/6e),定时帧(5f),时间帧(4f)中的一种或多种构成,结束 时发送一结束帧。 二、帧结构:每帧由84字节构成。 1、内码帧:一幕由一起始帧和零或多个中间帧组成,一次 发送可有多幕。 1)起始帧:地址(1字节)+帧控制7F(1字节) +幕号(1字节)+COMMAND(8字节) +内码/ASCII(73字节) 2)中间帧:地址(1字节)+帧控制7E(1字节)+ 幕号(1字节)+COMMAND(8字节)+内码/ASCII (73字节) 3)COMMAND: 前4字节未定义,后4字节依次为动画(0~4),移入及移出(各16种),速度(0~255),追加 (D3连续、D2停止、D0闪烁、D4时间、D6暂停、 D7动画) 4)内码/ASCII结构: a、内码4字节,依次为控制字节(D7宽体/正常体、D4绿色、D5红色、D3粗体、D2细体反白、D1 粗体反白、D0细体),内码高位,内码低位,未用 b、ASCII2字节,依次为控制字节(D7宽体/正常体、D5绿色、D4红色、D3粗体、D2细体反白、D1粗体 反白、D0细体),ASCII码 2、数码帧:由一起始帧和零或多中间帧组成。 1)起始帧:地址(1字节)+帧控制6F(1字节)+ 数据(82字节)

Java 串口通讯 RS232

通过comm.jar等配置 如果用applet应用程序的话,下面这个函数是可以取到串口的,但是如果通过web应用程序(或者通过jsp调用)却取不到串口,而且也不会抛出异常,感觉很奇怪,特来请教! CommPortIdentifier.getPortIdentifiers(); 同时目标机器的java运行环境也需要把w32comm.dll, comm.jar xxx.proper等放到相应的目录 就是用ibm的包而不用sun的comm包: ibm-javacomm-win32-x86.zip 只需要把comm驱动包这个类的装载更新一下即 https://www.360docs.net/doc/6712116138.html,/serialcomm.htm 利用Java实现串口全双工通讯 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。 本类库主要包括:SerialBean.java (与其他应用程序的接口), SerialBuffer.java(用来保存从串口所接收数据的缓冲区), ReadSerial.java (从串口读取数据的程序)。另外本类库还提供了一个例程SerialExample.java 作为示范。在下面的内容中将逐一对这几个部分进行详细介绍。 1. SerialBean SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。具体介绍如下: 本函数构造一个指向特定串口的SerialBean,该串口由参数PortID所指定。PortID = 1 表示COM1,PortID = 2 表示COM2,由此类推。 本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置为9600, N, 8, 1。如果串口被成功初始化,则打开一个进程读取从串口传入的数据并将其保存在缓冲区中。

java实现点对点通信.

用java实现的点对点通信程序的设计 通信0903班学号:姓名:指导老师:王国才、杨政宇 一设计目标: 1.使用Java高级面向对象编程语言编写一个网络聊天程序。 2.理解Socket的基本概念工作原理,掌握Socket的建立、监听、连接、发送数据和接收数据 3.环境要求:Windows95/98/2000/XP,WinSocke 4.能将键盘上输入的数据发送到另一台计算机上; 5.能将接收到的数据显示到屏幕窗口内; 6.类似于一般的主流网络即时聊天程序为了简化程序和系统结构,将“客户端——服务器——客户端”的数据传输方式改为“客户端——服务器”的模式。 7.程序应该具有图形界面,要具备聊天程序的基本雏形。 二设计原理与方法 1. TCP/IP协议的介绍 TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。 TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。许多用户熟悉使用TCP/IP协议的高层应用协议。包括万维网的超文本传输协议(HTTP),文件传输协议(FTP),远程网络访问协议(Telnet)和简单邮件传输协议(SMTP)。这些协议通常和TCP/IP协议打包在一起。使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到对方的调制解调器中。与TCP/IP协议相关的协议还包括用户数据报协议(UDP),它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet 控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP),边界网关协议(BGP)。

相关文档
最新文档