最近做课程设计的时候需要实现开发板和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与单片机通信:配置+编程实现的完整流程相关推荐

  1. 485通讯线是几芯的_RS485协议 电脑与stm32单片机通信 keil编程 在485的硬件错误中徘徊...

    学习于:野火stm32视频教程 CAN是用在汽车总线中,RS485是用在工业现场环境中.特定是传输距离远,抗干扰能力强. 485由232协议改进而来,协议层不变,只是改进了物理层,因此保留了串口通讯协 ...

  2. Python在Win10系统的安装和使用配置

    Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等. 下载 ...

  3. 485通信原理_上位机开发之单片机通信实践(一)

    微信号 :thinger_swj微博:@新阁程序园扫码关注 经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是 ...

  4. 【嵌入式基础】STM32中断及DMA通信原理编程

    本文主要学习stm32中断.DMA通信原理和编程方法.使用stm32tubemx和HAL库分别完成中断模式编程和串口通信中断实验. 目录 一.STM32中断,DMA通信原理编程 1.STM32中断 ( ...

  5. avr-gcc与avr单片机c语言开发 pdf,AVR 单片机与GCC 编程使用方法

    原标题:AVR 单片机与GCC 编程使用方法 WIN 是一个ATMEL AVR 系列 的开发工具集,它包含GNU C 和C++编译器 . 1.1 一个简单的例子 为了先有一个感性的认识,我们首先看一下 ...

  6. C语言对p1口取反,单片机c语言编程基础(5页)-原创力文档

    单片机的外部结构: 1. DIP40双列直插: 2. P0,P1,P2,P3四个8位准双向I/O引脚:(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20): ...

  7. win10搭建FTP服务器

    下面就给大家讲解Win10搭建FTP服务器的详细操作方法. 1.首先,我们在Cortana中搜索控制面板并进入: 2.在控制面板-程序中,点击启用或关闭Windows功能: 3.在FTP服务器.Web ...

  8. 485通信原理_上位机开发之单片机通信实践

    经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...

  9. pythonqt4上位机开发_上位机开发之单片机通信实践(一)

    经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...

最新文章

  1. 【Java】牛客网 链表分割
  2. 神经网络与机器学习 笔记—卷积神经网络(CNN)
  3. 二维矩阵与二维矩阵之间的卷积
  4. python 代理ip验证_Python 快速验证代理IP是否有效,再也不用担心被封IP了!
  5. python数据类型怎么定义_零基础如何学好Python 之int 数字整型类型 定义int()范围大小转换...
  6. Django01-1: request 方法
  7. HBase 的表设计
  8. Angular4.x+Ionic3 踩坑之路之打包时出现JAVASCRIPT HEAP OUT OF MEMORY的几种解决办法
  9. 微信支付国庆消费数据出炉:门票交易增幅超8成 酒店行业交易增幅超7成
  10. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)
  11. 开课吧课堂:什么是HashSet类
  12. 59道CSS面试题(附答案)
  13. Mathematic的学习打卡day 8
  14. Android修行手册-TextView常用属性篇
  15. 马斯克 超级计算机,超级计算机升空 马斯克的SpaceX负责运送
  16. 几行代码快速去掉迅雷临时文件的后缀
  17. 矩阵的特征值与特征向量 求解
  18. 浅谈NLP中的领域自适应(Domain Adaptation) 技术
  19. 美图秀秀 web开发图片编辑器
  20. Dynamical Isometry and a Mean Field Theory of CNNs

热门文章

  1. hdu 6609
  2. 离散数学学习笔记-01-随机试验与随机事件
  3. 边缘检测、导数与边缘、什么是梯度
  4. CF1525C Robot Collisions(思维,类似括号匹配)
  5. Latex-插入eps图片失败解决方法“ Latex Package pdftex.def Error....”
  6. Face detection in color images, 彩色图像中的人脸检测
  7. Node.js脚本项目合集(一):Node.js+FFmpeg实现批量从B站导出离线缓存视频到mp4格式,mp4转mp3,实现听歌自由
  8. switchport nonegotiate
  9. (附源码)Python二手电脑商城 毕业设计 251713
  10. 游戏编辑器制作(9)