win10搭FTP与单片机通信:配置+编程实现的完整流程

最近做课程设计的时候需要实现开发板和PC的文件传输,打算用FTP来实现,但屡屡出现FTP连接不上和命令not found的情况,终于摸索出一些经验,那不如分享一下完整的流程吧。

平台:迅为单片机SUM4412,PC(win 10系统)
软件:MobaXterm,tftpd64
硬件:串口线,网线
流程:
在这里插入图片描述

1. 将PC和开发板IP配置到同一网段

由于跨局域网的FTP访问需要路由,所以把PC和开发板的IP配置到同一网段,会更方便些。
我的方法是先查询开发板的IP,然后配置电脑的IP到它对应的网段下。
用串口线连接开发板和电脑,然后用MobaXterm软件新建一个serial:

选择对应的串口和合适的波特率(我用的115200):
在这里插入图片描述
如果serial port里面没有可选的项,那么可能是没有安装对应的驱动。打开设备管理器检查更新。如果更新后依然没有反应,需要更新windows系统。我当时重复了两遍操作之后,就能看到串口选项了,点击OK。
然后在弹出的窗口里敲入ifconfig命令后回车,就可以查看开发板的IP了:
在这里插入图片描述
然后配置电脑的IP为192.168.1.xxx。
用网线连接电脑和开发板,进入控制面板->网络和internet->以太网(未识别的网络),选择TCP/IPv4:
在这里插入图片描述
双击打开,设置IP地址为192.168.1.xxx,xxx可以任选但不能是1。设置子网掩码为255.255.255.0。
在这里插入图片描述
这样就把PC和开发板配置到同一网段了,下面开始正式搭建FTP。

2. PC:搭建FTP服务器

2.1 新建用户

在“此电脑”上右键,打开计算机管理:
在这里插入图片描述
选中“用户”右键,添加新用户:
在这里插入图片描述
设置好用户名和密码,然后去掉“用户下次登录时须更改密码”的选项,否则在创建好FTP之后,登录时会提示未修改密码,导致登不上。
在这里插入图片描述

2.2 打开FTP功能

进入控制面板->程序和功能->启用或关闭windows功能,打开FTP和IIS:
在这里插入图片描述
如果没做这一步,可能导致FTP无法连接。
然后关闭防火墙,否则也可能出现FTP无法连接。具体有很多做法。
1)直接关闭整个防火墙
打开控制面板->windows defender 防火墙:
在这里插入图片描述
在这里插入图片描述
2)允许FTP通过防火墙
在这里插入图片描述
点击更改设置,勾选FTP服务器,专用+公用:
在这里插入图片描述
点击允许其它应用,选择C:\Windows\System32\svchost.exe,确定。
然后打开防火墙对应的端口:
在这里插入图片描述
点击“入站规则”,右键“新建规则”,选择“端口”:
在这里插入图片描述
选择TCP(FTP协议是TCP/IP协议组中的协议),然后填写FTP端口(21或者22,后面创建FTP时指定的端口和这里要一样):
在这里插入图片描述
网上有资料说,FTP使用时可能也会用到其他端口,因此如果只打开21,后面可能会发生连接不上的问题。我后来找不出连接不上的原因,就保险起见把防火墙整个关了。关于防火墙的问题可以自行百度,可能要多试试。
在这里插入图片描述
在这里插入图片描述
名称和描述都很随意,填写后就可以完成了:
在这里插入图片描述

2.3 创建FTP服务器

首先在PC上创建一个文件夹用于FTP传输,相当于是指定了一个路径,里面的文件是被PC和开发板共享的:开发板只能从这个文件夹获取文件,也只能上传到这个文件夹。
windows搜索IIS,打开IIS管理器,右键“网站”,添加FTP站点:
在这里插入图片描述
填写主机的IP(也就是上面配置后的IP),选择“无SSL”(如果选择允许,那么需要在添加FTP站点之前新建一个证书并选定它)。
在这里插入图片描述
选择身份验证“基本”,对指定用户授权,用户名填写刚才新建的用户,完成。
在这里插入图片描述
在FTP页面右边可以查看当前站点的开启情况。点击基本设置->连接为:
在这里插入图片描述
在这里插入图片描述
选择特定用户,点击设置,填写刚才创建的用户名和密码:
在这里插入图片描述

2.4 命令行环境测试

搜索cmd打开命令行,输入ftp <PC机配置的IP>,然后输入用户名和密码即可登录。看到user logged in就说明登录成功了,可以初步判断为FTP搭建完成。注意在输入密码的时候窗口不会显示***,并不是输入有问题。
在这里插入图片描述
输入bye即可退出。

3. 开发板:配置FTP命令

3.1 telnet连接开发板

telnet是一种远程连接linux主机的方式,可以理解为:我想在开发板上敲命令,但是不方便,通过telnet就可以在电脑上敲命令了,而执行命令的依然是开发板,这和远程访问服务器有点像。
首先保证PC和开发板能ping通:在PC的cmd中输入ping <开发板的IP>,如果成功就说明ping通了。
然后进行telnet连接。打开MobaXterm,新建一个telnet session:
在这里插入图片描述
填写开发板的ip,以及用户名(root):
在这里插入图片描述
点击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命令

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故人西迁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值