导航:首页 > 操作系统 > 单片机tcp通信

单片机tcp通信

发布时间:2023-08-21 17:39:12

1. 单片机TCP/IP的如何使用单片机TCP/IP协议栈

用户在拿到一个单片机TCP/IP协议栈以后该如何处理呢。其中的处理分为两个部分:上层接口和下层接口。
4. 1 上层接口
用户使用单片机TCP/IP的目的实际非常明了,就是要实现数据的传送,即从PC机(或者另一个单片机)上传送过来的数据能够在本地单片机上接收,反之亦然。所以如果屏蔽底层的话,单片机TCP/IP协议栈就是一个传输数据的手段。所以最后归结到了使用send()、recv()函数即可。这就是使用单片机TCP/IP协议栈的核心所在。
但是事实上并没有这么简单,因为对于TCP需要有发起连接、接受连接、发送数据、接收数据、关闭连接等操作以配合数据的传输。TCP/IP协议栈一般为用户提供如下的接口:
1. 初始化协议栈和释放协议栈的函数接口,类似Init(), Release()之类的函数。
2. 提供类似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函数,用户调用此类函数进行发起连接、接受连接、发送数据、接收数据、关闭连接等操作。
3. 接受连接、接收数据、被动关闭的处理:由于此类操作是上位机发起的,所以TCP/IP协议栈必须提供一套机制来处理此类事件的发生。一般来说有两种方法:
a) 主动等待:例如使用BSD的recv()函数等待数据的到来。
b) 回调机制:采用类似MFC的OnReceive()函数的回调机制,也即是说在接收到数据的时候会自动调用OnReceive()函数。
那么用户如何使用以上的接口来实现远程控制、远程数据采集呢?方法很简单。
例如现在需要实现一个对LED灯的亮和灭的远程控制应用。首先PC机使用TCP/IP发送工具例如SocketDlgTest程序发送一个字节的“1”到开发板(根据开发板的IP地址发送)。开发板在OnReceive函数中发现收到的是“1”,那么就通过P1端口将灯打开;反之如果收到的是“0”则将灯熄灭。
如果是实现一个远程数据采集的应用,例如定时进行温度采集。首先PC机使用SocketDlgTest程序等待发来数据。开发板每隔一段时间采集一个数据,然后通过send()函数将数据发送给PC机(根据PC机的IP地址发送),这样PC就接收到了当前的远程温度数据。
4. 1 下层接口
下层接口是一个比较复杂的部分,实际上是TCP/IP协议栈和底层硬件的对接问题。如果用户将TCP/IP协议栈移植到自己的单片机系统上。由于硬件上存在一定的差异,就需要修改底层代码。这里需要包括:
1.网卡驱动:如果TCP/IP协议栈已经提供了网卡驱动,并且驱动和用户使用的网卡芯片一样,那么就相对容易一些。这里只需要修改网卡的基地址即可。否则需要自己动手写驱动程序。如果网卡采用RTL8019AS可以参考老古开发网的单片机与TCP/IP网络。如果网卡采用CS8900,可以参考《嵌入式 TCP/IP 协议单片机技术在网络通信中的应用》
2.TCP/IP底层接口。一般单片机TCP/IP需要底层为其提供定时中断、网卡中断处理的入口。底层需要做相应的处理。

2. 单片机TCP/IP开发板的使用

下面介绍如何使用TCP/IP开发板来进行项目开发。
3. 1 开发板套件
为了建立单片机TCP/IP开发环境,需要一套开发套件,一般包含有:①开发板。②开发板光盘。③USB线。④对连网线。⑤普通网线。⑥串口线。其中TCP/IP协议栈相关资料在②开发板光盘上,③USB线一般用于从PC机USB端口获得电。网线用于和PC机通信,⑥串口线用于和PC机串口通信。
3. 2 开发板部件
一个开发板本身是一个单片机系统,包含有CPU、RAM、电源模块、网络模块。网络模块有很多选择,这里以RTL8019AS为例来说明。对于外部接口,最主要的是:⑨网线接口和⑩串口,它们是开发板和PC连接的接口。
3. 3 建立开发环境
建立单片机TCP/IP开发环境的步骤有如下几步:
1. 连线:连线是将开发板与PC机的串口连接,给开发板上电,然后将开发板连接到和PC在同一个网段中。
2. 安装软件:需要安装开发板的编译环境。对于51单片机,一般选用KeilC51作为编译器。设置IP地址,由于必须要求PC机和开发板处于同一个网段,所以需要将PC机的IP地址设置为开发板IP地址的同一个网段的IP地址(有时候也需要设置为特定的IP地址)。
3. 测试连接:一般可以通过PING命令,例如ping 192.168.0.2 –t来测试开发板和PC机的网络是否处于连通状态。
3. 3 开发基于开发板的新程序
这里介绍如何在不修改开发板硬件的基础上,开发自己的单片机TCP/IP程序。开发新程序就是在开发板提供的TCP/IP协议栈的基础上开发应用层的协议。由于TCP层和IP层都已经提供,所以用户不用考虑其中的运行机制。TCP/IP协议栈一般为用户提供如下的接口:
1. 初始化协议栈和释放协议栈的函数接口,类似Init(), Release()之类的函数。
2. 提供类似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函数,用户调用此类函数进行发起连接、接受连接、发送数据、接收数据、关闭连接等操作。
3. 接受连接、接收数据、被动关闭的处理:由于此类操作是上位机发起的,所以TCP/IP协议栈必须提供一套机制来处理此类事件的发生。一般来说有两种方法:
a) 主动等待:例如使用BSD的recv()函数等待数据的到来。
b) 回调机制:采用类似MFC的OnReceive()函数的回调机制,也即是说在接收到数据的时候会自动调用OnReceive()函数。
那么用户如何使用以上的接口来实现远程控制、远程数据采集呢?方法很简单。
例如现在需要实现一个对LED灯的亮和灭的远程控制应用。首先PC机使用TCP/IP发送工具例如SocketDlgTest程序发送一个字节的“1”到开发板(根据开发板的IP地址发送)。开发板在OnReceive函数中发现收到的是“1”,那么就通过P1端口将灯打开;反之如果收到的是“0”则将灯熄灭。
如果是实现一个远程数据采集的应用,例如定时进行温度采集。首先PC机使用SocketDlgTest程序等待发来数据。开发板每隔一段时间采集一个数据,然后通过send()函数将数据发送给PC机(根据PC机的IP地址发送),这样PC就接收到了当前的远程温度数据。
4. 3 开发基于新硬件的程序
通过“开发基于开发板的新程序”一节的介绍后,开发基于新硬件的程序就相对容易了。这只要根据相应的硬件调整通过单片机的控制端口例如P1进行控制或者数据采集即可。

3. 单片机既然已经采用TCP连接了,可以直接发送数据,为什么还要使用http post这种方式发送数据

TCP属于是传输层(有关OSI七层协议,可参考网页链接)的协议!而HTTP协议是一种应用层协议!基于TCP的一种协议。HTTP 超文本传送协议(Hypertext Transfer Protocol )是应用层协议,定义的是传输数据的内容的规范。

4. 单片机TCP/IP协议栈都有哪些

TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列。
TCP/IP协议栈
(按TCP/IP参考模型划分)
应用层 FTP SMTP HTTP ...
传输层 TCP UDP
网络层 IP ICMP ARP
链路层 以太网 令牌环 FDDI ...
包含了一系列构成互联网基础的网络协议。
这些协议最早发源于美国国防部的DARPA互联网项目。
TCP/IP字面上代表了两个协议:TCP传输控制协议和IP互联网协议。
时间回放到1983年1月1日,在这天,互联网的前身Arpanet中,TCP/IP协议取代了旧的网络核心协议NCP(Network Core Protocol),从而成为今天的互联网的基石。最早的的TCP/IP由Vinton Cerf和Robert Kahn两位开发,慢慢地通过竞争战胜了其它一些网络协议的方案,比如国际标准化组织ISO的OSI模型。TCP/IP的蓬勃发展发生在上世纪的90年代中期。当时一些重要而可靠的工具的出世,例如页面描述语言HTML和浏览器Mosaic,导致了互联网应用的飞束发展。
随着互联网的发展,目前流行的IPv4协议(IP Version 4,IP版本四)已经接近它的功能上限。IPv4最致命的两个缺陷在于:
地址只有32位,IP地址空间有限;
不支持服务等级(Quality of Service, Qos)的想法,无法管理带宽和优先级,故而不能很好的支持现今越来越多的实时的语音和视频应用。因此IPv6 (IP Version 6, IP版本六) 浮出海面,用以取代IPv4。
TCP/IP成功的另一个因素在与对为数众多的低层协议的支持。这些低层协议对应与OSI模型 中的第一层(物理层)和第二层(数据链路层)。每层的所有协议几乎都有一半数量的支持TCP/IP,例如: 以太网(Ethernet),令牌环(Token Ring),光纤数据分布接口(FDDI),端对端协议( PPP),X.25,帧中继(Frame Relay),ATM,Sonet, SDH等。
TCP/IP协议栈组成
整个通信网络的任务,可以划分成不同的功能块,即抽象成所谓的 ” 层” 。用于互联网的协议可以比照TCP/IP参考模型进行分类。TCP/IP协议栈起始于第三层协议IP(互联网协议) 。所有这些协议都在相应的RFC文档中讨论及标准化。重要的协议在相应的RFC文档中均标记了状态: “必须“ (required) ,“推荐“ (recommended) ,“可选“ (elective) 。其它的协议还可能有“ 试验“(experimental) 或“ 历史“(historic) 的状态。
必须协议
所有的TCP/IP应用都必须实现IP和ICMP。对于一个路由器(router) 而言,有这两个协议就可以运作了,虽然从应用的角度来看,这样一个路由器 意义不大。实际的路由器一般还需要运行许多“推荐“使用的协议,以及一些其它的协议。
在几乎所有连接到互联网上的计算机上都存在的IPv4 协议出生在1981年,今天的版本和最早的版本并没有多少改变。升级版IPv6 的工作始于1995年,目的在与取代IPv4。ICMP 协议主要用于收集有关网络的信息查找错误等工作。
推荐协议
每一个应用层(TCP/IP参考模型 的最高层) 一般都会使用到两个传输层协议之一: 面向连接的TCP传输控制协议和无连接的包传输的UDP用户数据报文协议 。 其它的一些推荐协议有:
TELNET (Teletype over the Network, 网络电传) ,通过一个终端(terminal)登陆到网络(运行在TCP协议上)。
FTP (File Transfer Protocol, 文件传输协议) ,由名知义(运行在TCP协议上) 。
SMTP (Simple Mail Transfer Protocol,简单邮件传输协议) ,用来发送电子邮件(运行在TCP协议上) 。
DNS (Domain Name Service,域名服务) ,用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上) 。
ECHO (Echo Protocol, 回绕协议) ,用于查错及测量应答时间(运行在TCP和UDP协议上) 。
NTP (Network Time Protocol,网络时间协议) ,用于网络同步(运行在UDP协议上) 。
SNMP (Simple Network Management Protocol, 简单网络管理协议) ,用于网络信息的收集和网络管理。
BOOTP (Boot Protocol,启动协议) ,应用于无盘设备(运行在UDP协议上)。
可选协议
最常用的一些有
支撑万维网WWW的超文本传输协议HTTP,
动态配置IP地址的DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),
收邮件用的POP3 (Post Office Protocol, version 3, 邮局协议) ,
用于加密安全登陆用的SSH (Secure Shell,用于替代安全性差的TELNET) ,
用于动态解析以太网硬件地址的ARP (Address Resolution Protocol,地址解析协议) 。
范例: 不同计算机运行的不同协议
一个简单的路由器上可能会实现ARP, IP, ICMP, UDP, SNMP, RIP。
WWW用户端使用ARP, IP, ICMP, UDP, TCP, DNS, HTTP, FTP。
一台用户电脑上还会运行如TELNET, SMTP, POP3, SNMP, ECHO, DHCP, SSH, NTP。
无盘设备可能会在固件比如ROM中实现了ARP, IP, ICMP, UDP, BOOT, TFTP (均为面向数据报的协议,实现起来相对简单)。

5. 单片机TCP/IP开发板的用途

目前单片机上网技术是一个热门技术,很多高校学生选择与此相关的毕业设计,同时高校也有与此相关的项目。为了快速实现单片机TCP/IP,可以通过使用单片机TCP/IP开发板来实现。一般一个单片机TCP/IP开发板需要包含如下的内容:
1. 单片机TCP/IP协议栈:用户可以根据协议栈提供的用户接口来实现TCP的发起连接、接受连接、发送数据、接收数据、关闭连接等操作。最好是该协议栈能够兼容BSD socket接口。
2. 硬件电路板及其相关连接线:用此硬件可以建立嵌入式TCP/IP实验环境。
3. 硬件原理图:这可以方便用户将相关硬件集成到自己的电路板中。
4. 配套开发工具:在嵌入式TCP/IP实验环境中必须要有PC机端的软件,用以和开发板进行通信。

6. 单片机TCP/IP的介绍

单片机TCP/IP就是在单片机上运行的TCP/IP协议栈。由于嵌入式联网设备越来越多,需要在嵌入式设备上实现TCP/IP协议栈,但是嵌入式设备不同于PC机,它们一般采用MCU也就是单片机而不是CPU作为核心处理器。这就需要在单片机上实现TCP/IP协议栈。对于高端的32位单片机,由于其性能已经接近于低端PC机CPU(例如奔腾II系列),所以和在PC上实现TCP/IP协议栈没有多大区别;这里主要讲述低端8位(例如51单片机)、16位单片机TCP/IP协议栈。

7. 上位机与单片机网口TCP通信连接失败怎么办

不知道你的单片机网口采用的是什么方案。ping能通说明底层协议栈应该没有太大问题,TCP连接不通你得跟踪一下单片机这边有没有收到请求,如果没有是在哪里跳出的;从上位机端也可以抓一下包看看是不是握手过程没有完成。

8. 单片机TCP/IP的单片机TCP/IP的特点

在单片机上实现TCP/IP与在PC机上实现TCP/IP是有所不同的,参考《TCP/IP在51单片机上的实现特点和方法》我们可以了解到,它的特点是:
1. 速度慢:根据该文档的介绍12M晶振的51单片机的最快网络传送速度为25KB/s。其中的关键在于TCP/IP需要对传送的每个字节进行校验和计算,以及必要的拷贝。这样51单片机的处理速度就不够了。为了提高单片机TCP/IP的速度一般的方法是要对协议栈进行精简。
2. 程序存储空间和外部RAM空间不大:一般的单片机的最大程序和数据空间为64KB。TCP/IP协议一般需要对发送的数据进行缓存,而一个最大的数据包就有1500B左右,当网络速度很大的时候内存消耗将很大。对于非嵌入式TCP/IP协议栈,64KB的程序和数据空间是不够的。
3. 单片机体系结构:51单片机是8位机,所以对于需要完成同一个数据操作,32位的PC机可能只需要10条指令,而51单片机可能需要几百条指令。

阅读全文

与单片机tcp通信相关的资料

热点内容
蜜源app是什么时候创立的 浏览:704
计算机专业学51单片机 浏览:208
程序员不接受反驳 浏览:294
微软自带的压缩软件 浏览:286
中国玩家在日本服务器做什么 浏览:48
12864和单片机 浏览:898
25匹空调压缩机 浏览:649
adkandroid下载 浏览:308
如何在苹果电脑上装python 浏览:327
哪个app的跑步训练内容最丰富 浏览:583
广讯通怎么删除文件夹 浏览:206
解压的视频化妆品 浏览:674
易语言新进程监视源码 浏览:941
turbo码译码算法 浏览:956
stc11f16xe单片机 浏览:282
linuxupdate命令行 浏览:578
pdf转化成wps 浏览:765
php抛出错误 浏览:159
买车看车用什么app 浏览:656
dos怎么清除屏幕上的命令 浏览:813