本文已参加「新人创作礼」活动,一同敞开创作之路。

最近做课程设计的时分需求完成开发板和PC的文件传输,打算用FTP来完成,但屡屡呈现FTP衔接不上和指令not found的状况,终于探索出一些经验,那不如分享一下完整的流程吧。

平台:迅为单片机SUM4412,PC(win 10系统)

软件:MobaXterm,tftpd64

硬件:串口线,网线

流程:

用FTP实现win10与单片机通信:配置+编程实现

1. 将PC和开发板IP装备到同一网段

因为跨局域网的FTP拜访需求路由,所以把PC和开发板的IP装备到同一网段,会更便利些。

我的办法是先查询开发板的IP,然后装备电脑的IP到它对应的网段下。

用串口线衔接开发板和电脑,然后用MobaXterm软件新建一个serial:

用FTP实现win10与单片机通信:配置+编程实现

挑选对应的串口和合适的波特率(我用的115200):

用FTP实现win10与单片机通信:配置+编程实现

假如serial port里边没有可选的项,那么或许是没有装置对应的驱动。翻开设备办理器检查更新。假如更新后依然没有反应,需求更新windows系统。我当时重复了两遍操作之后,就能看到串口选项了,点击OK。

然后在弹出的窗口里敲入ifconfig指令后回车,就能够检查开发板的IP了:

用FTP实现win10与单片机通信:配置+编程实现

然后装备电脑的IP为192.168.1.xxx。

用网线衔接电脑和开发板,进入控制面板->网络和internet->以太网(未辨认的网络),挑选TCP/IPv4:

用FTP实现win10与单片机通信:配置+编程实现

双击翻开,设置IP地址为192.168.1.xxx,xxx能够任选但不能是1。设置子网掩码为255.255.255.0。

用FTP实现win10与单片机通信:配置+编程实现

这样就把PC和开发板装备到同一网段了,下面开端正式建立FTP。

2. PC:建立FTP服务器

2.1 新建用户

在“此电脑”上右键,翻开计算机办理:

用FTP实现win10与单片机通信:配置+编程实现

选中“用户”右键,增加新用户:

用FTP实现win10与单片机通信:配置+编程实现

设置好用户名和暗码,然后去掉“用户下次登录时须更改暗码”的选项,不然在创立好FTP之后,登录时会提示未修改暗码,导致登不上。

用FTP实现win10与单片机通信:配置+编程实现

2.2 翻开FTP功能

进入控制面板->程序和功能->启用或封闭windows功能,翻开FTP和IIS:

用FTP实现win10与单片机通信:配置+编程实现

假如没做这一步,或许导致FTP无法衔接。

然后封闭防火墙,不然也或许呈现FTP无法衔接。详细有很多做法。

1)直接封闭整个防火墙

翻开控制面板->windows defender 防火墙:

用FTP实现win10与单片机通信:配置+编程实现
用FTP实现win10与单片机通信:配置+编程实现

2)答应FTP经过防火墙

用FTP实现win10与单片机通信:配置+编程实现

点击更改设置,勾选FTP服务器,专用+公用:

用FTP实现win10与单片机通信:配置+编程实现

点击答应其它应用,挑选C:\Windows\System32\svchost.exe,确定。

然后翻开防火墙对应的端口:

用FTP实现win10与单片机通信:配置+编程实现

点击“入站规矩”,右键“新建规矩”,挑选“端口”:

用FTP实现win10与单片机通信:配置+编程实现

挑选TCP(FTP协议是TCP/IP协议组中的协议),然后填写FTP端口(21或者22,后边创立FTP时指定的端口和这儿要相同):

用FTP实现win10与单片机通信:配置+编程实现

网上有材料说,FTP使用时或许也会用到其他端口,因而假如只翻开21,后边或许会产生衔接不上的问题。我后来找不出衔接不上的原因,就稳妥起见把防火墙整个关了。关于防火墙的问题能够自行百度,或许要多试试。

用FTP实现win10与单片机通信:配置+编程实现
用FTP实现win10与单片机通信:配置+编程实现

名称和描绘都很随意,填写后就能够完成了:

用FTP实现win10与单片机通信:配置+编程实现

2.3 创立FTP服务器

首先在PC上创立一个文件夹用于FTP传输,适当所以指定了一个路径,里边的文件是被PC和开发板共享的:开发板只能从这个文件夹获取文件,也只能上传到这个文件夹。

windows查找IIS,翻开IIS办理器,右键“网站”,增加FTP站点:

用FTP实现win10与单片机通信:配置+编程实现

填写主机的IP(也就是上面装备后的IP),挑选“无SSL”(假如挑选答应,那么需求在增加FTP站点之前新建一个证书并选定它)。

用FTP实现win10与单片机通信:配置+编程实现

挑选身份验证“根本”,对指定用户授权,用户名填写方才新建的用户,完成。

用FTP实现win10与单片机通信:配置+编程实现

在FTP页面右边能够检查当时站点的敞开状况。点击根本设置->衔接为:

用FTP实现win10与单片机通信:配置+编程实现
用FTP实现win10与单片机通信:配置+编程实现

挑选特定用户,点击设置,填写方才创立的用户名和暗码:

用FTP实现win10与单片机通信:配置+编程实现

2.4 指令行环境测试

查找cmd翻开指令行,输入ftp <PC机装备的IP>,然后输入用户名和暗码即可登录。看到user logged in就说明登录成功了,能够初步判断为FTP建立完成。留意在输入暗码的时分窗口不会显现***,并不是输入有问题。

用FTP实现win10与单片机通信:配置+编程实现

输入bye即可退出。

3. 开发板:装备FTP指令

3.1 telnet衔接开发板

telnet是一种长途衔接linux主机的方法,能够理解为:我想在开发板上敲指令,但是不便利,经过telnet就能够在电脑上敲指令了,而履行指令的依然是开发板,这和长途拜访服务器有点像。 首先确保PC和开发板能ping通:在PC的cmd中输入ping <开发板的IP>,假如成功就说明ping通了。 然后进行telnet衔接。翻开MobaXterm,新建一个telnet session:

用FTP实现win10与单片机通信:配置+编程实现

填写开发板的ip,以及用户名(root):

用FTP实现win10与单片机通信:配置+编程实现

点击OK,输入用户名root回车即可登录。然后在这个界面下,能够检查开发板里的文件,也能够运转其间的可履行文件。

3.2 装置指令

我想让开发板往PC的FTP文件夹传文件,需求用到curl指令,但是在telnet里输入指令却无法履行,后来发现是开发板根本就没有装置这个指令,自然无法调用。 能够百度下载需求的指令,然后用现成的东西(比如tftpd64)传到开发板上,放在代码生成的可履行文件的同一目录下。

3.3 编程完成FTP指令

在C语言中,用system("<指令>")函数能够履行所需的指令。例如,要用代码完成curl指令,能够这么写:

system("./curl -u <FTP用户名>:<FTP暗码> -T <本地文件名> ftp://<FTP服务器的IP>");

这样就能够主动完成FTP通讯了,其他指令和格局能够查手册。 需求留意的是,代码生成的可履行文件想要在telnet里跑通,需求在运转前给curl指令指定权限:

chmod 777 curl
./<可履行文件名>

不然上面那行代码依然无法运转。

参考材料

[1] Win10怎样设置防火墙敞开特定端口 windows10防火墙设置对特定端口敞开的办法

[2] Windows下怎样建立FTP服务而且设置其用户名和暗码

[3] ftp衔接不上怎样解决啊,如下图

[4] Win10敞开FTP与装备(完整无错版)

[5] linux下常用FTP指令