admin 管理员组文章数量: 887017
最近做课程设计的时候需要实现开发板和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命令
版权声明:本文标题:win10搭FTP与单片机通信:配置+编程实现的完整流程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729141441h1322986.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论