文档库 最新最全的文档下载
当前位置:文档库 › TCP课设报告

TCP课设报告

TCP课设报告
TCP课设报告

目录

摘要 (2)

第一章课程设计目的及要求 (3)

1.1课题背景及意义 (3)

1.2可行性分析 (3)

1.3设计目的 (3)

第二章课程设计具体实现 (4)

2.1总体设计 (4)

2.1.1设计要求 (4)

2.1.2功能要求 (4)

2.2 详细设计 (4)

2.2.1服务器的设计 (4)

2.2.2客户端的设计 (4)

2.3程序流程分析 (5)

2.3调试分析过程 (6)

第三章心得体会 (9)

第四章核心代码 (10)

摘要

在网络越来越发达的今天,聊天已经成为人们工作、生活中必不可少的一部分。计算机网络技术发展至今已经大大超越了人们当初的预想,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微信、微软的MSN等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷。接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用Visual C++。

关键字:网络、聊天软件、 Visual C++、多线程

1.1课题背景及意义

当今世界正处于信息时代,计算机和通信网络是这一时代所谓“信息基础设施”。在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。基于SOCKET 的局域网通信是一种灵活的、易于实现的、低成本的方法。它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。而在SOCKET API的帮助下,开发基于SOCKET的局域网通信软件也是易于实现的。

1.2可行性分析

本课程设计主要解决在客户端于客户端的信息交换和客户端于服务器的信息交换及服务器的信息处理上的管理的课程设计。

此程序主要分为两部分:服务器端和客户端。客户端用于发送消息。服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;在服务器端会显示客户端发来的任何消息,当客户端发出特殊字符时,服务器端会自动断开连接。

先启动服务器端聊天程序,这是聊天服务器需要指定一个端口号,客户端则根据这个端口号以及服务器的网络地址与服务器进行通信。在这里,把端口号的范围是1-100。服务器启动后将在这个指定的端口号中等待客户的连接。这里的通过分析发现,该程序完全可以通过Visual C++中MFC完成。

1.3设计目的

综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以Visual C++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。

2.1总体设计

2.1.1设计要求

采用客户/服务器模式,分为客户端程序和服务器端程序。使用VC分别进行基于对话框的服务器和客户端程序的开发,程序基于流套接字的客户机/服务器方式,实现一个多线程的简单聊天室程序。

2.1.2功能要求

1.服务器可以接收任何客户的连接;

2.服务器在同一时刻可以和多个客户通信;

3.客户端和服务器端可以进行信息的收发及显示。

2.2 详细设计

2.2.1服务器的设计

(1)服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,以记录所有成功的连接。

(2)服务器聊天程序要及时接受从客户端发送过来的信息,然后把这些信息显示。

这些要求可以通过CSocket类提供的功能实现。从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。服务器只需要一个侦听套接字CListenSocket,然后根据客户的连接请求动态创建客户套接字CClientSocket。客户套接字的数量是不可预知的,因此需要一个列表来记录。MFC的CPtrList类就能实现这种功能。

2.2.2客户端的设计

(1)客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接。

(2)客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息

发送出去,才能及时地满足用户的交互需求。

(3)在用户退出聊天过程是要关闭与服务器的连接。比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,使得服务器能够及时掌

握客户端的连接状态,把对方客户的退出信息及时发送到对等实体上。 客户端聊天程序需要使用一个通过CSocket 类派生出来的CChatSocket 类来实现。该套接字用来发送一个与服务器的连接请求和维持与服务器的连接,发送和接收聊天信息,完成上述各项功能。

2.3程序流程分析

启动

登录

等待客户端登录

客户端用户

创建子套接字

Message

CListenSocket

CClientSocket

Message

登陆成功

连接上

发送message

找到客户端并显示

登陆失败

发送端口号

2.3调试分析过程

最开始显示的客户端的页面,如图4.1

图4.1

最开始显示的服务器页面,如图4.2

图4.2

在客户端输入端口号,如图4.3

图4.3

在服务器上会显示,端口号已经连接,如图4.4

图 4.4

在客户端发出两条信息,如图4.5

图 4.5

服务器上会显示刚才客户端发出的信息,如图4.6

图4.6

第三章心得体会

通过本次的实验,让我对多线程技术有了新的认识。从刚开始的不知所措,慢慢的通过自己查阅资料开始找到了实验的思路。在实验中,最让我感到困难的就是怎么实现多线程通讯,但是通过与同学的讨论,到最后自己还得到了结论,也增加了自己不少的自信心,我想在以后的生活与学习中我也会更加向上。通过这学期对windows的学习以及以往对window程序设计的理解并在学校图书馆查阅相关资料,最终通过大家的努力完成了这个简单的局域网通信程序。虽然是个小程序,但通过这个程序的开发,让我们对windows程序设计的一些相关的知识得以巩固,也提升我们对windows程序的认识。

在此次开发过程中,我们使用了多线程的编程方式将数据监听也数据的接受都做为一个线程来处理。并在接受数据线程里分解了发送来的数据并根据不同的命令来执行不同的操作,这也是本程序的核心部分。通过这个程序我们理解了怎样去建立一个TCP连接,以及如何使用TCP进行数据的传输。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中。

第四章源代码

服务器

类CListenSocket的定义和实现

(1)头文件ListenSocket.h, 定义类CSocket的派生类CListenSocket。

class CChatServerDoc;

class CClientSocket : public CSocket

{

public:

CSocketFile* m_pFile;

CArchive* m_pArchiveIn;

CArchive* m_pArchiveOut;

CChatServerDoc* m_pDoc;

public:

CClientSocket();

virtual ~CClientSocket();

void WorkWithArchive();

public:

public:

virtual void OnReceive(int nErrorCode);

virtual void OnClose(int nErrorCode);

protected:

};

#endif

(2)ListenSocket.cpp,CListenSocket 的实现部分,主要用来监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应表项。

#include "stdafx.h"

#include "ChatServer.h"

#include "ChatServerdoc.h"

#include "ClientSocket.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

CClientSocket::CClientSocket()

{

m_pArchiveOut=NULL;

m_pArchiveIn=NULL;

m_pFile=NULL;

}

CClientSocket::~CClientSocket()

{

if(m_pArchiveOut!=NULL)

delete m_pArchiveOut;

if(m_pArchiveIn!=NULL)

delete m_pArchiveIn;

if(m_pFile!=NULL)

delete m_pFile;

}

#if 0

BEGIN_MESSAGE_MAP(CClientSocket, CSocket)

END_MESSAGE_MAP()

#endif

void CClientSocket::OnReceive(int nErrorCode)

{

CString string,temp;

do

{

*(m_pArchiveIn)>>temp;

string+=temp;

}while(!m_pArchiveIn->IsBufferEmpty());

m_pDoc->ChatLog(string);

m_pDoc->FeedbackAllClients(string);

CSocket::OnReceive(nErrorCode);

}

void CClientSocket::OnClose(int nErrorCode)

{

m_pDoc->CloseSocket(this);

CSocket::OnClose(nErrorCode);

}

void CClientSocket::WorkWithArchive()

{

m_pFile=new CSocketFile(this);

m_pArchiveIn=new CArchive(m_pFile,CArchive::load);

m_pArchiveOut=new CArchive(m_pFile,CArchive::store);

}

类C聊天工具DOC的定义和实现。

(1)定义文档类的头文件ChatServerDoc.h,定义类C聊天工具Doc的接口。class CListenSocket;

class CClientSocket;

class CChatServerDoc : public CDocument

{

protected: // create from serialization only

CChatServerDoc();

DECLARE_DYNCREATE(CChatServerDoc)

CListenSocket* m_pSocket;

CPtrList m_connectionList;//the list of object points for session to client socket public:

void FeedbackAllClients(CString string);

void DealAccept();

void CloseSocket(CClientSocket *pClientSocket);

void ChatLog(CString string);

public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchive& ar);

virtual void DeleteContents();

public:

virtual ~CChatServerDoc();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

protected:

DECLARE_MESSAGE_MAP()

};

#endif // !defined(AFX_CHATSERVERDOC_H__922C5A8B_6E8E_11D6_86F5_0000E86F1B18__INCLUDED_) (2)聊天工具Doc.cpp文件,C聊天工具Doc类的实现部分。

#include "stdafx.h"

#include "ChatServer.h"

#include "inputport.h"

#include "listensocket.h"

#include "clientsocket.h"

#include "chatserverview.h"

#include "ChatServerDoc.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

IMPLEMENT_DYNCREATE(CChatServerDoc, CDocument)

BEGIN_MESSAGE_MAP(CChatServerDoc, CDocument)

END_MESSAGE_MAP()

//构造函数

CChatServerDoc::CChatServerDoc()

{

m_pSocket=NULL;

}

CChatServerDoc::~CChatServerDoc()

{

delete m_pSocket;

}

BOOL CChatServerDoc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

CInputPort dialog;

if(dialog.DoModal()==IDOK)

{

m_pSocket=new CListenSocket();

m_pSocket->m_pDoc=this;

if(m_pSocket->Create(dialog.m_nPort+1000))

{

if(m_pSocket->Listen())

{

char sPort[10];

CString temp="服务器在端口:"+CString(itoa(dialog.m_nPort+1000,sPort,10))+"启动成功,正等待连接\r\n";

((CEditView*)m_viewList.GetHead())->SetWindowText(temp);}}}

return TRUE;

}

void CChatServerDoc::Serialize(CArchive& ar)

{

// CEditView contains an edit control which handles all serialization

((CEditView*)m_viewList.GetHead())->SerializeRaw(ar);

}

#ifdef _DEBUG

void CChatServerDoc::AssertValid() const

{

CDocument::AssertValid();

}

void CChatServerDoc::Dump(CDumpContext& dc) const

{

CDocument::Dump(dc);

}

#endif //_DEBUG

void CChatServerDoc::DeleteContents()

{

if(m_pSocket!=NULL)

delete m_pSocket;

m_pSocket=NULL;

FeedbackAllClients("服务器已经关闭,请重新连接");

while(!m_connectionList.IsEmpty())

{

CClientSocket* pSocket=(CClientSocket*)m_connectionList.RemoveHead();

pSocket->Close();

delete pSocket;

}

m_connectionList.RemoveAll();

if(!m_viewList.IsEmpty())

((CEditView*)m_viewList.GetHead())->SetWindowText(_T(""));

CDocument::DeleteContents();

}

void CChatServerDoc::DealAccept()

{

CClientSocket* pSocket=new CClientSocket();

pSocket->m_pDoc=this;

if(m_pSocket->Accept(*pSocket))

{

pSocket->WorkWithArchive();

m_connectionList.AddTail(pSocket);

}

else

delete pSocket;

}

void CChatServerDoc::FeedbackAllClients(CString string)

{

for(POSITION pos=m_connectionList.GetHeadPosition();pos!=NULL;)

{

CClientSocket*pSocket=(CClientSocket*)m_connectionList.GetNext(pos);

*(pSocket->m_pArchiveOut)<

pSocket->m_pArchiveOut->Flush();

}

}

void CChatServerDoc::CloseSocket(CClientSocket*pSocket)

{

pSocket->Close();

POSITION pos,temp;

for(pos=m_connectionList.GetHeadPosition();pos!=NULL;)

{

temp=pos;

CClientSocket* pSock=(CClientSocket*)m_connectionList.GetNext(pos);

if(pSock==pSocket)

{

m_connectionList.RemoveAt(temp);

break;

}

}

delete pSocket;

}

void CChatServerDoc::ChatLog(CString string)

{

((CChatServerView*)m_viewList.GetHead())->ChatLog(string);

}

C聊天工具View的定义

#include "stdafx.h"

#include "ChatServer.h"

#include "ChatServerDoc.h"

#include "ChatServerView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

IMPLEMENT_DYNCREATE(CChatServerView, CEditView)

BEGIN_MESSAGE_MAP(CChatServerView, CEditView)

END_MESSAGE_MAP()

CChatServerView::CChatServerView()

{

}

CChatServerView::~CChatServerView()

{

}

BOOL CChatServerView::PreCreateWindow(CREATESTRUCT& cs)

{

BOOL bPreCreated = CEditView::PreCreateWindow(cs);

cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping return bPreCreated;

}

void CChatServerView::OnDraw(CDC* pDC)

{

CChatServerDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

}

#ifdef _DEBUG

void CChatServerView::AssertValid() const

{

CEditView::AssertValid();

}

void CChatServerView::Dump(CDumpContext& dc) const

{

CEditView::Dump(dc);

}

CChatServerDoc* CChatServerView::GetDocument() // non-debug version is inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CChatServerDoc)));

return (CChatServerDoc*)m_pDocument;

}

#endif //_DEBUG

void CChatServerView::ChatLog(CString string)

{

string+=_T("\r\n");

int len=GetWindowTextLength();

GetEditCtrl().SetSel(len,len);

GetEditCtrl().ReplaceSel(string);

}

客服端

CChatSocket 类的定义和实现

(1)CChatSocket通过头文件ChatSocket.h类定义

#pragma once

class CChatClientDoc;

class CChatSocket : public CSocket

{

public:

CChatClientDoc* m_pDoc;

CSocketFile*m_pFile;

CArchive*m_pArchiveIn;

CArchive*m_pArchiveOut;

public:

CChatSocket();

virtual ~CChatSocket();

public:

void WorkWithArchive();

BOOL SendWords(CString words);

public:

virtual void OnClose(int nErrorCode);

virtual void OnReceive(int nErrorCode);

protected:

};

#endif

(2)ChatSocket.cpp文件,CChatSocket类的实现部分

#include "stdafx.h"

#include "ChatClient.h"

#include "ChatSocket.h"

#include "ChatClientDoc.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

CChatSocket::CChatSocket()

{

m_pFile=NULL;

m_pArchiveIn=NULL;

m_pArchiveOut=NULL;

}

CChatSocket::~CChatSocket()

{

if(m_pArchiveOut!=NULL)

delete m_pArchiveOut;

if(m_pArchiveIn!=NULL)

delete m_pArchiveIn;

if(m_pFile!=NULL)

delete m_pFile;

}

#if 0

BEGIN_MESSAGE_MAP(CChatSocket, CSocket)

END_MESSAGE_MAP()

#endif // 0

BOOL CChatSocket::SendWords(CString words)

{

*(m_pArchiveOut)<

m_pArchiveOut->Flush();

return true;

}

void CChatSocket::OnClose(int nErrorCode)

{

// TODO: Add your specialized code here and/or call the base class m_pDoc->CloseSocket(this);

CSocket::OnClose(nErrorCode);

}

void CChatSocket::OnReceive(int nErrorCode)

{

CSocket::OnReceive(nErrorCode);

CString string,temp;

do

{

*(m_pArchiveIn)>>temp;

string+=temp;

}

while(!m_pArchiveIn->IsBufferEmpty());

m_pDoc->ChatLog(string);

}

void CChatSocket::WorkWithArchive()

{

m_pFile=new CSocketFile(this);

m_pArchiveIn=new CArchive(m_pFile,CArchive::load);

m_pArchiveOut=new CArchive(m_pFile,CArchive::store);

}

C客户端Doc类的定义与实现部分

(1)在头文件CChatClientDoc.h中定义C客户端Doc类,定义C客户端Doc类的接口。#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class CChatSocket;

class CChatClientView;

class CInputView;

class CChatClientDoc : public CDocument

{

protected: // create from serialization only

CChatClientDoc();

DECLARE_DYNCREATE(CChatClientDoc)

public:

CString m_strName;

CChatSocket* m_pSocket;

CChatClientView *m_pChatClientView;

CInputView *m_pInputView;

public:

public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchive& ar);

virtual void DeleteContents();

public:

void CloseSocket(CChatSocket* pSocket);

void GetView();

void ChatLog(CString string);

virtual ~CChatClientDoc();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

protected:

DECLARE_MESSAGE_MAP()

};

#endif // !defined(AFX_CHATCLIENTDOC_H__922C5AA2_6E8E_11D6_86F5_0000E86F1B18__INCLUDED_) (2)客户端Doc.cpp文件中,CChatClientDoc.cpp类的,实现部分

#include "stdafx.h"

#include "ChatClient.h"

#include "ChatSocket.h"

#include "ChatClientView.h"

#include "InputView.h"

#include "GetSPN.h"

#include "ChatClientDoc.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

IMPLEMENT_DYNCREATE(CChatClientDoc, CDocument)

BEGIN_MESSAGE_MAP(CChatClientDoc, CDocument)

END_MESSAGE_MAP()

CChatClientDoc::CChatClientDoc()

{

m_pChatClientView=NULL;

m_pInputView=NULL;

}

CChatClientDoc::~CChatClientDoc()

{

}

BOOL CChatClientDoc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

CGetSPN Dialog;

Dialog.m_stringname=_T("");

Dialog.m_stringServer=_T("");

Dialog.m_nPort=0;

while(TRUE)

{

if(IDOK!=Dialog.DoModal())

return FALSE;

m_strName=Dialog.m_stringname;

m_pSocket=new CChatSocket();

m_pSocket->m_pDoc=this;

if(!m_pSocket->Create())

{

delete m_pSocket;

m_pSocket=NULL;

AfxMessageBox("创建socket失败,请检查输入");

}

else if(!m_pSocket->Connect(Dialog.m_stringServer,Dialog.m_nPort+1000))

{

if(AfxMessageBox("连接失败,你还要重新连接么?",MB_YESNO)==IDNO)

{

delete m_pSocket;

m_pSocket=NULL;

return false;}}

else

{

m_pSocket->WorkWithArchive();

GetView();

m_pSocket->SendWords("欢迎进入聊天室!");

return TRUE; }}}

void CChatClientDoc::Serialize(CArchive& ar)

{

m_pChatClientView->SerializeRaw(ar);

}

#ifdef _DEBUG

void CChatClientDoc::AssertValid() const

{

CDocument::AssertValid();

}

void CChatClientDoc::Dump(CDumpContext& dc) const

{

CDocument::Dump(dc);

}

#endif //_DEBUG

void CChatClientDoc::ChatLog(CString string)

{

m_pChatClientView->ChatLog(string);

}

void CChatClientDoc::GetView()

{

POSITION pos=GetFirstViewPosition();

m_pChatClientView=(CChatClientView*)GetNextView(pos);

m_pInputView=(CInputView*)GetNextView(pos);

最新西华大学机器人创新设计实验报告(工业机械手模拟仿真)

实验报告 (理工类) 课程名称: 机器人创新实验 课程代码: 6003199 学院(直属系): 机械学院机械设计制造系 年级/专业/班: 2010级机制3班 学生姓名: 学号: 实验总成绩: 任课教师: 李炜 开课学院: 机械工程与自动化学院 实验中心名称: 机械工程基础实验中心

一、设计题目 工业机器人设计及仿真分析 二、成员分工:(5分) 三、设计方案:(整个系统工作原理和设计)(20分) 1、功能分析 工业机器人由操作机(机械本体)、控制器、伺服驱动系统和检测传感装置构成,是一种仿人操作、自动控制、可重复编程、能在三维空间完成各种作业的机电一体化自动化生产设备。特别适合于多品种、变批量的柔性生产。它对稳定、提高产品质量,提高生产效率,改善劳动条件和产品的快速更新换代起着十分重要的作用。机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术,是当代研究十分活跃,应用日益广泛的领域。机器人应用情况,是一个国家工业自动化水平的重要标志。机器人并不是在简单意义上代替人工的劳动,而是综合了人的特长和机器特长的一种拟人的电子机械装置,既有人对环境状态的快速反应和分析判断能力,又有机器可长时间持续工作、精确度高、抗恶劣环境的能力,从某种意义上说它也是机器的进化过程产物,它是工业以及非产业界的重要生产和服务性设备,也是先进制造技术领域不可缺少的自动化设备。 本次我们小组所设计的工业机器人主要用来完成以下任务: (1)、完成工业生产上主要焊接任务; (2)、能够在上产中完成油漆、染料等喷涂工作; (3)、完成加工工件的夹持、送料与转位任务; (5)、对复杂的曲线曲面类零件加工;(机械手式数控加工机床,如英国DELCAM公司所提供的风力发电机叶片加工方案,起辅助软体为powermill,本身为DELCAM公司出品)

tcpip实验报告

网络协议分析实验 一、实验目的 通过使用协议分析软件,对通信系统的通信过程进行监控、分析,以了解通信协议的工作过程。 二、实验内容 利用协议分析软件(如:Wireshark)跟踪局域网报文(如条件允许也可跟踪多种局域网协议报文),实验内容如下: 将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。 设置过滤器过滤网络报文以检测特定数据流。 利用协议分析软件的统计工具显示网络报文的各种统计信息。 三、实验步骤 1、在PC中安装协议分析软件(如:Wireshark)。具体安装过程详见附录:Wireshark用户指南。 2、启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。可根据系统提示修改显示方式,详见附录:Wireshark用户指南。 3、调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。 EHERNET报文格式 IEEE802.3报文格式 IP报文格式

4、设置过滤器属性,如目的地址,源地址,协议类型等。如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。 过滤器有两种工作方式: 1)捕获前过滤:协议分析软件用过滤器匹配网络上的数据报文,仅当匹配通过时才捕获报文。 2)捕获后过滤:协议分析软件捕获所有报文,但仅显示匹配符合过滤条件的报文。选择统计菜单项可以显示网络中各种流量的统计信息,如:关于字节数,广播中报文数,出错数等。

UDP 客户/服务器实验 一、实验目的 本实验目的是使用因特网提供的UDP 传输协议,实现一个简单的UDP 客户/服务器程序,以了解传输层所提供的UDP 服务的特点,应用层和传输层之间的软件接口风格,熟悉socket 机制和UDP 客户端/服务器方式程序的结构。 二、实验内容 本实验为UDP 客户/服务器实验。实验内容:UDP echo 客户/服务器程序的设计与实现。UDP echo 客户/服务器程序完成以下功能: 客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo )给客户;客户读此回射行,并将其写到标准输出。 三、实验步骤 1、 总体设计 客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。 2、 详细设计 U D P 客户-服务器程序所用套接口函数 1)服务器main 函数 2)服务器str_echo 函数

接口实验报告

接口与通讯实验报告 实验一可编程定时计数器8253 一、实验目的 掌握8253的基本工作原理和编程方法。 二、实验内容 按图16虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。 三、编程提示 8253控制寄存器地址283H 计数器0地址280H 计数器1地址281H CLK0连接时钟1MHZ 四·实验原理图 五、实验流程图

六实验代码及注释 ioport equ 0ff00h-0280h;定义宏 io8253a equ ioport+283h io8253b equ ioport+280h code segment assume cs:code start :mov al,10h mov dx,io8253a;输入端口地址 out dx,al;延时 mov dx,io8253b mov al,0fh;初始化 out dx,al;延时 l: in al,dx call disp;调用子程序 push dx;入栈 mov ah,06h mov dl,0ffh int 21h pop dx;出栈 jz l;转l mov ah,4ch;已完,退出 int 21h disp proc near;定义范围为段内push dx and al,0fh;初始化al mov dl,al cmp dl,9;比较

jle num add dl,7 num : add dl,30h mov ah,02h int 21h mov dl,0dh int 21h mov dl,0ah int 21h pop dx ret disp endp code ends end start 七.实验报告 1.8255简介 8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。 2.8255外部特性及引脚功能 RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。

机器人实验报告

一、机器人的定义 美国机器人协会(RIA)的定义: 机器人是一种用于移动各种材料、零件、工具或专用的装置,通过可编程序动作来执行种种任务的、并具有编程能力的多功能机械手。 日本工业机器人协会(JIRA—Japanese Industrial Robot Association):一种带有存储器件和末端执行器的通用机械,它能够通过自动化的动作替代人类劳动。(An all—purpose machine equipped with a memory device and an end—effector,and capable of rotation and of replacing human labor by automatic performance of movements.) 世界标准化组织(ISO):机器人是一种能够通过编程和自动控制来执行诸如作业或移动等任务的机器。(A robot is a machine which can be programmed to perform some tasks which involve manipulative or locomotive actions under automatic control.) 中国(原机械工业部):工业机器人是一种能自动定位控制、可重复编程、多功能多自由度的操作机,它能搬运材料、零件或夹持工具,用以完成各种作业。 二、机器人定义的本质: 首先,机器人是机器而不是人,它是人类制造的替代人类从事某种作业的工具,它能是人的某些功能的延伸。在某些方面,机器人可具有超越人类的能力,但从本质上说机器人永远不可能全面超越人类。

TCPIP实验报告

TCP/IP技术实验报告 书 专业:[通信工程] 学生姓名:[张世超] 完成时间:9:28 AM

实验一网络应用程序基础 实验目得: 通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程得基本知识,加深对课堂教学内容得理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中得实际问题,进行一些简单得网络应用程序设计。实验内容: 1,Winsock得启动与终止。 2,Winsock得创建及绑定与关闭。 3,建立通信连接listen及accept与connect。 4,数据得传输。 5,简单得客户机/服务器之间得通信。 要求:通过在SDK模式下完成数据通信得过程,掌握Windows Socket得常用函数得形式与使用方法,理解数据通信得过程。 实验步骤: 1,打开VC环境 1,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置 2,在文件中添加代码 3,编译调试 4,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置 5,在文件中添加代码 6,编译调试 7,分别打开两个系统命令窗口中,并分别在其中运行客户端与服务器端程序。 8,在客户端侧输入字符,可以瞧到服务器收到字符串 参考代码:课本156页--160页 实验结果: Client: #include<Winsock2、h> #include<stdio、h> //服务器端口号为5050 #define DEFAULT_PORT 5050 #define DATA_BUFFER 1024 void main(int argc,char *argv[]) { ?WSADATA wsaData; SOCKET sClient; ?int iPort=DEFAULT_PORT;

接口与实现实验报告

XXXXXXXX 实验报告 XXXXXXXXXX 系部计算机系班级XXXX班课程Java语言程序设计姓名XXXX 学号2XXXXX 日期XXXXXXXXXXX 项目接口与实现——评价成绩 1.相关知识点 接口体中只有常量的声明(没有变量)和抽象方法的声明。而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符),所有的抽象方法的访问权限一定都是public(允许省略public、final修饰符)。 接口由类去实现以便绑定接口中的方法。一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。 2.实验目的 本实验的目的是让学生掌握类怎样实现接口。 3.实验要求 体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。Gymnastics类和School类都实现了ComputerAverage接口,但实现的方式不同。 4.程序源代码 interface ComputerAverage {

public duble average(double x[]); } class Gymnastics implements ComputerAverage { public double average(double x[]); { int count=x.length; double aver=0,temp=0; for(int i=0;i2) aver=aver/(count-2); else aver=0; return aver; } } class School implements ComputerAverage

TCP.IP课程实验报告

TCP/IP协议族分析 课程设计

目录 第一章TCP/IP 概述 (3) 1.1 TCP/IP协议族定义 (3) 1.2 TCP/IP协议族的特点 (3) 1.3 TCP/IP协议族的分层 (3) 1.4 TCP/IP协议族的结构 (4) 第二章地址解析协议(ARP)——链路层 (5) 2.1 ARP概述 (6) 2.2 ARP的组成 (6) 2.3 ARP工作原理 (7) 2.4 ARP帧结构 (7) 第三章因特网控制消息协议(ICMP)——网络层 (13) 3.1 ICMP协议简介 (13) 3.2 ICMP消息结构 (14) 3.3 Echo Request和Echo Reply查询消息 (14) 3.4 ICMP各字段分析 (15) 第四章传输控制协议(TCP)——运输层 (18) 4.1 TCP协议简介 (18) 4.2 TCP数据包结构 (19) 4.3 TCP数据包分析 (20) 4.4 TCP三次“握手” (25) 第五章普通文件传输协议(TFTP)——应用层 (27) 5.1 TFTP数据传输模式 (27) 5.2 TFTP会话实例 (28) 总结 (31) 参考文献 (31)

第一章 TCP/IP 协议族概述 1.1 TCP/IP协议族定义 TCP/IP协议族是指一整套数据通信协议, 其名字是由这些协议中的两个协议组成的,即传输控制协议(Transmission Control Protocol ——TCP)和网间协议(Internet Protocol——IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议。 1.2 TCP/IP协议族的特点 TCP/IP协议族有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围内的数据通信。其特点包括: ●开放式协议标准。可免费使用,且与具体的计算机硬件或操作系统无关。由于它受到如此广泛的支持,因而即使不通过Internet 通信,利用TCP/IP来统一不同的硬件和软件也是很理想的。 ●与物理网络硬件无关。这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X.25网络以及任何其它类型的物理传输介质。 ●通用的寻址方案。该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以像全球Internet那样大。 ●各种标准化的高级协议。可广泛而持续地提供多种用户服务。 1.3 TCP/IP协议族的分层 图1-1 TCP/IP协议族中不同层次的协议

接口课程设计报告(郝俊)

接口课程设计报告 计算机0202班郝俊 学号;012002013429 一.课程设计的要求与目的 结合一个实际的接口技术问题,设计一个微机应用系统,包括主控机,数个下位机及执行部件,要求该系统综合应用并行接口、串行接口和其他接口,编写对应的上位机和下位机程序,实现主控机与下位机的远距离传送和远程监控功能。 系统结构,如图; 其中;1.系统硬件由一台主控机,数台下位机和执行部件组成,主控机与下位机通过串行通信线连接。 2.主控机:与所有下位机进行数据交换,必要时需建数据库,进行数据处理等。 3.下位机:与主控机通信,控制执行部件。 4.执行部件;将接收的数据送入到下位机或将下位机输出的数据送到执行部件。 5.主控机程序:串行(RS232/RS485)通信程序,数据处理程序等。 6.下位机程序:串行(RS232/RS485)通信程序,执行部件控制程序 二.课程设计的题目 地铁计费系统

1.系统功能; 乘客进站要在执行部件上刷卡,出站也要刷卡,执行部件将接收到的数据通过下位机传送给上位机,上位机根据卡号得出卡上金额。出站时计算费用,并判断乘客是否买足了票,如果费用大于卡上金额,表示票款不足,则发出警报;如果费用小于卡上金额,表示票款足够,则算出余额,最后将数据送到下位机显示出来。 2.开发环境 我们本次课程设计所用的开发环境是实验室提供的MF多功能微机接口实验与开发平台,所用的语言是IBM-PC汇编语言。 3.实验分工 我们组的成员有我,冯茂盛,徐捷和黄林,其中冯茂盛同学担任组长。我们的分工如下;冯茂盛同学负责下位机的程序编写以及整体调试,徐捷同学负责上位机的程序编写,黄林同学和我分别负责上位机和下位机的辅助设计以及硬件设计连接。 三.流程图

机器人课程设计报告范例.

**学校 机器人课程设计 名称___________________________________ 院系电子信息工程系 班级10电气3 _____ 姓名_______ 学号107301336 指导教师 _________ 宋佳______

目录 第一章绪论 (2) 1.1课程设计任务背景 (2) 1.2课程设计的要求 (2) 第二章硬件设计 (3) 2.1结构设计 (3) 2.2电机驱动 (4) 2.3传感器 (5) 2.3.1光强传感器 (5) 2.3.2光强传感器原理 (6) 2.4硬件搭建 (6) 第三章软件设计 (8) 3.1 步态设计 (8) 3.1.1 步态分析: (8) 3.1.2程序逻辑图: (9) 3.2用NorthStar 设计的程序 (9) 第四章总结 (11) 第五章参考文献 (12)

第一章绪论 1.1课程设计任务背景 机器人由机械部分、传感部分、控制部分三大部分组成.这三大部分可分成驱动系统、机械结构系统、感受系统、机器人一环境交互系统、人机交互系统、控制系统六个子系统现在机器人普遍用于工业自动化领域,如汽车制造,医疗领域,如远程协助机器人,微纳米机器人,军事领域,如单兵机器人,拆弹机器人,小型侦查机器人(也属于无人机吧),美国大狗这样的多用途负重机器人,科研勘探领域,如水下勘探机器人,地震废墟等的用于搜查的机器人,煤矿利用的机器人。如今机器人发展的特点可概括为:横向上,应用面越来越宽。由95% 的工业应用扩展到更多领域的非工业应用。像做手术、采摘水果、剪枝、巷道掘进、侦查、排雷,还有空间机器人、潜海机器人。机器人应用无限制,只要能想到的,就可以去创造实现;纵向上,机器人的种类会越来越多,像进入人体的微型机器人,已成为一个新方向,可以小到像一个米粒般大小;机器人智能化得到加强,机器人会更加聪明 1.2课程设计的要求 设计一个机器人系统,该机器人可以是轮式、足式、车型、人型,也可以是仿其他生物的,但该机器人应具备的基本功能为:能够灵活行进,能感知光源、转向光源并跟踪光源;另外还应具备一项其他功能,该功能可自选(如亮灯、按钮启动、红外接近停止等)。 具体要求如下: 1、根据功能要求进行机械构型设计,并用实训套件搭建实物。 2、基于实训套件选定满足功能要求的传感器; 3、设计追光策略及运动步态; 4、用NorthStar 设计完整的机器人追光程序; 5、调试; 6、完成课程设计说明书,内容:方案设计、硬件搭建过程(附照片)、控制算法流 程、程序编写、调试结果、心得体会。

TCP实验报告 计算机网络

计算机网络实验报告——TCP客户/服务器应用程序设计 姓名: 班级:

一.实验目的 实现在TCP方式下客户端和服务器端的数据传输过程。 二.实验要求 编程实现一个聊天室系统。该系统首先必须设立服务器,建立完成后必须建立与服务器的连接。建立成功后可以接收客户端输入的信息。该系统包括客户端和服务器端两部分。用户通过客户端发送消息。服务器端在收到消息后,显示在主界面上 实验报告要求有实现过程的流程图,对主要的函数及其参数给予说明,要有实现过程的主要程序段,并对各段程序的功能及作用进行说明。 三.程序实验原理及流程图 在TCP/IP协议下,通讯是建立在服务器与客户端之间的。由客户端想服务器发送连接请求,服务器响应后建立连接,然后才能开始进行通讯。一下是实现的流程图。 系统工作流程:

四.节目设计 在VC++的MFC下创建基于对话框模式的TCP服务器端和TCP客户端,设置控件并调整相应的属性。下面是初始化的效果:

五.主要函数及其参数说明 1、服务器端 1)BOOL CCSocketDlg::OnInitDialog() 用于初始化对话框。在这个这个系统自动生成的函数中添加对进程的控制。 count=0; m_list.InsertColumn(0,"消息");

m_list.SetColumnWidth(0,435); m_edit.SetLimitText(99); for (int i=0;i<50;i++) msgsock[i]=NULL; //设定地址 serv.sin_addr.s_addr=htonl(INADDR_ANY); serv.sin_family=AF_INET; serv.sin_port=5000;//htons(5000); addlen=sizeof(serv); m_button.EnableWindow(FALSE); //创建socket sock=socket(AF_INET,SOCK_STREAM,0); //绑定 if (bind(sock,(sockaddr*)&serv,addlen)){ m_edit.SetWindowText("绑定错误"); } else{ //m_list.InsertItem(count++,inet_ntoa(serv.sin_addr)); m_edit.SetWindowText("服务器创建成功"); //开始侦听 listen(sock,5); //调用线程 AfxBeginThread(&thread,0); 2)getcount() 用于获得还没有使用的socket数组号int CCSocketDlg::getcount(){ for (int i=0;i<50;i++){ if (msgsock[i]==NULL) return i;} return -1;

单片机接口技术课程设计报告

轻工业学院本科 单片机与接口技术课程设计 总结报告 设计题目:定时器控制交通灯(带故障报警) 学生:忠良王彦峰王永亮方庆刚 系别:计算机与通信工程学院 专业:通信工程 班级:通信工程08-1班 学号:9 指导教师:晓雷副教授 2011年1月7日

轻工业学院 课程设计任务书 题目定时器控制交通灯(带故障报警) 专业班级通信工程08-1班学号忠良59号 主要容、基本要求、主要参考资料等: 1. 课程设计目的 (1) 加强对所学理论知识的理解,提高综合应用、分析能力; (2) 掌握MCS51单片机开发系统的使用; (3) 学习与掌握程序设计方法及硬件电路的设计还有联调仿真最 终成所选择课题的设计; (4) 利用简单的应用系统,培养应用系统的开发能力。 2. 课程设计要求 (1)完成LED灯的显示、按键识别、电铃发出响声等,并完成模拟交通灯的功能; (2)从源程序、软件模拟、调试方面完成软件系统; (3)利用开发系统完成系统的总体调试、程序烧写,实现应用系统功能,并能对系统运行中的问题进行分析。 3. 参考资料

(1)单片机典型系统设计实例精讲为,黄科,雷道仲编著电子工业出版发行2006.5(3,4); (2)单片机原理及应用建忠编著电子科技大学; (3)AT89系列单片机原理与接口技术王幸之,钟爱琴等编著航空航天大学出版发行2004; (4)51单片机编程基础与开发实例详解岂兴明,唐杰等编著人民邮电出版发行。 完成期限:2011-1-7 指导教师签名:晓雷 课程负责人签名:晓雷 2011年01月3日 目录 第一章设计容与要求4 第二章设计原理5 1.单片机概述5 2.STC89C52芯片简介6 3.定时器/计数器8

《工业机器人》实验报告

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验一:工业机器人认识 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解6自由度工业机器人的机械结构,工作原理,性能指标、控制系统,并初步掌握操作。了解6自由度工业机器人在柔性制造系统中的作用。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述工业机器人的机械结构、工作原理及性能指标。 2、描述控制系统的组成及各部分的作用。

3、描述机器人的软件平台及记录自己在进行实际操作时的步骤及遇到的问题以及自己的想法。教师批阅:

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验二:机器人坐标系的建立 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人建立坐标系的意义;了解机器人坐标系的类型;掌握用D-H方法建立机器人坐标系的方法与步骤。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人建立坐标系的意义以及机器人坐标系的类型。 2、深入研究机器人机械结构,建立6自由度关节型机器人杆件坐标系,绘制机器人杆件坐标系图。

教师批阅:

实验课程:工业机器人实验名称:实验三:机器人示教编程与再现控制 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人示教编程的工作原理,掌握6自由度工业机器人的示教编程与再现控制。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人示教编程的原理。 2、详细叙述示教编程与再现的操作步骤,记录每一个程序点,并谈谈实验心得体会。教师批阅:

TCP协议实验报告

学生实验报告 姓名:_________ 学号:____________ 班级:________________ 指导老师:_______________ 内容摘要 该实验报告了TCP协议分析实验相关分析; TCP协议分析是通过Wireshark分析TCP协议的报文格式,如理解TCP报文段首部各字段的含义,理解TCP建立连接的三次握手机制,了解TCP的确认机制,了解TCP的流量控制和拥塞控制 实验目的 1. 通过协议分析软件掌握TCP协议的报文格式; 2. 理解TCP报文段首部各字段的含义; 3. 理解TCP建立连接的三次握手机制; 4. 了解TCP的确认机制,了解TCP的流量控制和拥塞控制; 实验原理 连上in ternet的PC机,并且安装有协议分析软件Wireshark 实验原理及概况 TCP是因特网中最主要的运输层协议,它能够在两个应用程序章提供可靠的、有序的数据流传输,能够检测传输过程中分组是否丢失、失序和改变,并利用重传机制保证分组可 靠地传输到接收方; TCP首部格式如下图所示: 位U 3 16 24 31 首先是源端口和目的端口,服务器提供服务的端口号是固定的,比如:Web服务端口 号是80,而客户端的端口号是由操作系统随机分配一个用户端口号。TCP提供字节流服务, 它为分组中的每个字节编号,首部中的序号表示分组中第一个字节的编号。接收方用确认号 表示它期望接收的数据流中下一个字节编号,表明确认号之前的字节接收方都已经正确接收 了。数据偏移字段表示报文段的首部长度。标志部分包含6个标志位,ACK位表明确认号 字段是否有效;PUSH位表示发送端应用程序要求数据立即发送;SYN、FIN、RESET三位 用来建立连接和关闭连接;URG和紧急指针通常较少使用。接收端利用窗口字段通知发送 方它能够接收多大数据量。检验和字段是接收方用来检验接收的报文是否在传输过程中出

计数器7段数码管控制接口技术课程设计报告

《EDA技术综合设计》 课程设计报告 报告题目:计数器7段数码管控制接口技术 作者所在系部: 作者所在专业: 作者所在班级: 作者姓名: 作者学号: 指导教师姓名: 完成时间: 1

内容摘要 掌握VHDL语言基本知识,并熟练运用VHDL语言来编写程序,来下载实践到硬件上,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。利用VHDL语言设计一个七段数码管控制引脚,在时钟信号的控制下,使6位数码管动态刷新显示十进制计数器及其进位,十二进制计数器,四位二进制可逆计数器,六十进制计数器的计数结果,这期间需要seltime分频器来动态的给各个计数器分配数码管,并显示数字的变化。 关键词:VHDL语言编程七段数码管控制引脚芯片

目录 一概述 (1) 二方案设计与论证 (1) 三单元电路设计与参数计算 (1) 3.1数码管译码器 (1) 3.2 十进制计数器 (2) 3.3六十进制计数器 (3) 3.4四位二进制可逆计数器 (5) 3.5时间数据扫描分时选择模块 (6) 3.6顶层文件 (8) 四总的原理图 (9) 五器件编程与下载 (9) 六性能测试与分析(要围绕设计要求中的各项指标进行) (10) 七实验设备 (10) 八心得体会 (10) 九参考文献 (10)

课程设计任务书课题 名称7段数码管控制引脚 完成 时间 2011. 12.12 指导 教师胡辉职称副教授 学生 姓名 庄仲班级B09212 总体设计要求和技术要点 通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。 具体要求: 1.设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,同时显示2、3、4所要求的计数器。 2.设计一个带使能输入、进位输出及同步清0的增1十进制计数器。 3.设计一个带使能输入及同步清0的六十进制同步加法计数器; 4.设计一个四位二进制可逆计数器; 工作内容及时间进度安排 第16周: 周一、周二:设计项目的输入、编译、仿真 周三:器件编程下载与硬件验证 周四:成果验收与总结 周五:撰写课程设计总结报告 课程设计成果 把编写好的程序下载到试验箱,使数码管能够按照编写的程序显示出正确的结果,实验成功。

机器人课程设计报告范例

机器人课程设计报告范例

**学校 机器人课程设计名称 院系电子信息工程系 班级10电气3 姓名谢士强 学号107301336 指导教师宋佳

目录 第一章绪论 (2) 1.1课程设计任务背景 (2) 1.2课程设计的要求 (2) 第二章硬件设计 (3) 2.1 结构设计 (3) 2.2电机驱动 (4) 2.3 传感器 (5) 2.3.1光强传感器 (5) 2.3.2光强传感器原理 (6) 2.4硬件搭建 (7) 第三章软件设计 (8) 3.1 步态设计 (8) 3.1.1步态分析: (8) 3.1.2程序逻辑图: (9) 3.2 用NorthStar设计的程序 (10) 第四章总结 (12) 第五章参考文献 (13)

第一章绪论 1.1课程设计任务背景 机器人由机械部分、传感部分、控制部分三大部分组成.这三大部分可分成驱动系统、机械结构系统、感受系统、机器人一环境交互系统、人机交互系统、控制系统六个子系统现在机器人普遍用于工业自动化领域,如汽车制造,医疗领域,如远程协助机器人,微纳米机器人,军事领域,如单兵机器人,拆弹机器人,小型侦查机器人(也属于无人机吧),美国大狗这样的多用途负重机器人,科研勘探领域,如水下勘探机器人,地震废墟等的用于搜查的机器人,煤矿利用的机器人。如今机器人发展的特点可概括为:横向上,应用面越来越宽。由95%的工业应用扩展到更多领域的非工业应用。像做手术、采摘水果、剪枝、巷道掘进、侦查、排雷,还有空间机器人、潜海机器人。机器人应用无限制,只要能想到的,就可以去创造实现;纵向上,机器人的种类会越来越多,像进入人体的微型机器人,已成为一个新方向,可以小到像一个米粒般大小;机器人智能化得到加强,机器人会更加聪明 1.2课程设计的要求 设计一个机器人系统,该机器人可以是轮式、足式、车型、人型,也可 以是仿其他生物的,但该机器人应具备的基本功能为:能够灵活行进,能感知光源、转向光源并跟踪光源;另外还应具备一项其他功能,该功能可自选(如亮灯、按钮启动、红外接近停止等)。 具体要求如下: 1、根据功能要求进行机械构型设计,并用实训套件搭建实物。 2、基于实训套件选定满足功能要求的传感器; 3、设计追光策略及运动步态; 4、用NorthStar设计完整的机器人追光程序;

TCPIP协议分析实验报告

.. TCP/IP协议分析及应用实验报告 学号:姓名:班级: 实验项目编号: B03862704 实验项目名称:传输控制协议TCP 一、实验目的: 1. 掌握TCP协议的报文格式。 2. 掌握TCP连接的建立和释放过程。 3. 掌握TCP数据传输中编号与确认的过程。 4. 掌握TCP协议校验和的计算方法。 5. 理解TCP重传机制。 二、实验环境: Windows server 2003 TCP/IP协议分析及应用教学实验平台 三、实验原理(或要求): TCP报文格式 16位源端口号 16位目的端口号 位序号32 位确认序号32F P U A R S 4位首6保留(16I 位窗口大小 C 部长R S S Y 位)N N T G K H 度位紧急指针16位校验和16 选项数据 连接的建立TCP在面向连接的环境中,开始传输数据之前,在两个终 TCP是面 向连接的协议。通信双方必须用彼此的初端之间必须先建立一个连接。对于一个 要建立的连接,(指明希望收到的下一个ackseq始化序列号和来自对方成功传输 确认的应答号。ACK,应答信号写为八位组的编号)来同步,习惯上将同步信 号写为SYN整个同步的过程称为三次握手,如图: 优质范文.

连接的释放TCP附加标记的报FINTCP使用四次握手来结束通话(使用一个带有对于一个已经建立的连接,如图。文段) TCP重传机制只要计时器设置的重传时间到期,就对这个报文段设置一次计时器。TCP每发送一个报文段,但还没有收到确认,就要重传这一报文段。

优质范文. .. 四、实验步骤: 练习一:察看TCP连接的建立和释放 主机B、C、D启动协议分析器进行数据捕获,并设置过滤条件(提取TCP协议)。主机A启动仿真编辑器,进入TCP连接视图。在“服务器信息/IP地址”中填入主机C的IP地址;使用“端口扫描”获取主机C的TCP端口列表,在“服务器信息/端口”中填入主机C的一个TCP端口(大于1024);点击“连接”按钮进行连接。 察看主机B、C、D捕获的数据,填写下表。 字段名称报文1 报文2 报文3 Sequence Number Acknowledgement Number ACK SYN TCP连接建立时,前两个报文的首部都有一个“maximum segment size”字段,它的值是多少?作用是什么?结合IEEE802.3协议规定的以太网最大帧长度分析此数据是怎样得出的。 主机A断开与主机C的TCP连接。 察看主机B、C、D捕获的数据,填写下表。

接口实验报告

接口实验课程结课报告 学号、专业:控制工程 1508202024 姓名:** 报告题目:基于STM32的实时时钟设计 指导教师:潘明 所属学院:电子工程与自动化学院 成绩评定 教师签名 桂林电子科技大学研究生院 2016年6月4日

摘要 本设计以STM32F103芯片为控制核心,利用其内部的RTC设计了一个实时时钟。本系统主要由以下几个部分组成:微处理器,实时时钟模块,显示模块,调节模块。其中MCU 采用STM32F103芯片,实时时钟采用RTC实时时钟,显示模块为4.3寸的TFTLCD显示屏,采用独立按键调节。另外整个系统是在系统软件控制下工作的,能实现年、月、日、时、分、秒的实时显示及闹钟功能,并增加了温度显示。 关键字:STM32F103;实时时钟(RTC);TFTLCD显示屏

Abstract This design with STM32F103 chip as the control core, using its internal RTC design a real-time clock. The system is mainly composed of the following parts: microprocessor, real-time clock module, display module, control module. MCU using STM32F103 chip, real-time clock using RTC , display module use the 4.3 inch TFTLCD display screen, using independent buttons to adjust . In addition, the whole system is under the control of the system software,and accomplish the year, month, day, hour, minute, second real-time display and alarm clock function,and added to temperature display. Key words: STM32F103;real time clock(RTC); TFTLCD display screen

机器人课程设计报告

机器人课程设计报 告

苏州市职业大学 课程设计说明书 名称会追光的机器人 12月31日至 1月4日共 1 周 院系电子信息工程系 班级 10电气3 姓名谢士强 学号 系主任张红兵 教研室主任邓建平 指导教师宋佳 目录 第一章绪论 ................................................................... 错误!未定义书签。

1.1课程设计任务背景............................................ 错误!未定义书签。 1.2课程设计的要求................................................ 错误!未定义书签。第二章硬件设计 ............................................................ 错误!未定义书签。 2.1 结构设计 ........................................................... 错误!未定义书签。 2.2电机驱动 ........................................................... 错误!未定义书签。 2.3 传感器 ............................................................... 错误!未定义书签。 2.3.1光强传感器 .............................................. 错误!未定义书签。 2.3.2光强传感器原理 ...................................... 错误!未定义书签。 2.4硬件搭建 ........................................................... 错误!未定义书签。第三章软件设计 ........................................................... 错误!未定义书签。 3.1 步态设计 ........................................................... 错误!未定义书签。 3.1.1步态分析: .............................................. 错误!未定义书签。 3.1.2程序逻辑图: .......................................... 错误!未定义书签。 3.2 用NorthStar设计的程序 .................................. 错误!未定义书签。第四章总结 ................................................................... 错误!未定义书签。第五章参考文献 ........................................................... 错误!未定义书签。

TCP协议实验报告

T C P协议实验报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

学生实验报告 姓名:学号:班级:指导老师: 内容摘要 该实验报告了TCP协议分析实验相关分析; TCP协议分析是通过Wireshark分析TCP协议的报文格式,如理解TCP报文段首部各字段的含义,理解TCP建立连接的三次握手机制,?了解TCP的确认机制,了解TCP的流量控制和拥塞控制 实验目的 1.通过协议分析软件掌握TCP协议的报文格式; 2.理解TCP报文段首部各字段的含义; 3.理解TCP建立连接的三次握手机制; 4.了解TCP的确认机制,了解TCP的流量控制和拥塞控制; 实验原理 连上internet的PC机,并且安装有协议分析软件Wireshark 实验原理及概况 TCP是因特网中最主要的运输层协议,它能够在两个应用程序章提供可靠的、有序的数据流传输,能够检测传输过程中分组是否丢失、失序和改变,并利用重传机制保证分组可靠地传输到接收方; TCP首部格式如下图所示:

首先是源端口和目的端口,服务器提供服务的端口号是固定的,比如:Web服务端口号是80,而客户端的端口号是由操作系统随机分配一个用户端口号。TCP提供字节流服务,它为分组中的每个字节编号,首部中的序号表示分组中第一个字节的编号。接收方用确认号表示它期望接收的数据流中下一个字节编号,表明确认号之前的字节接收方都已经正确接收了。数据偏移字段表示报文段的首部长度。标志部分包含6个标志位,ACK位表明确认号字段是否有效;PUSH位表示发送端应用程序要求数据立即发送;SYN、FIN、RESET三位用来建立连接和关闭连接;URG 和紧急指针通常较少使用。接收端利用窗口字段通知发送方它能够接收多大数据量。检验和字段是接收方用来检验接收的报文是否在传输过程中出错。 TCP重传机制:当发送方传输一个报文段的同时启动一个重传计时器,当该报文的确认到达时,这个计时器就会取消,如果这个计时器超时,那么数据将会被重传。TCP在重传之前,并不总是等待重传计时器超时,TCP也会把一系列重复确认的分组当作是数据丢失的先兆;

相关文档