借用python 学习 VM的 FTP(VisionMaster4.3)

embedded/2025/2/22 18:05:46/

无懒不python:看官方V社区有介绍: 需要安装 Quick Easy FTP Server V4.0.0.exe

为了表示敬意再次放出链接:

V社区-机器智能技术交流-VM关于FTP存图的一点分享

好了VM先放一边 先用python自收 自发: 毕竟这个免费

FTP服务端: 0.ftpserver.py

需要安装的库 和 注意事项已经在注视里面说明;

#pip install pyftpdlib
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
r"""
运行之前需要安装好
#pip install pyftpdlibwin10 复制的的路径是这样的
C:\Users\Administrator\Desktop\FTP路径这么写也没问题
"C:/Users/Administrator/Desktop/FTP/path/to/ftp"
"C:\\Users\\Administrator\\Desktop\\FTP\\path\\to\\ftp"
个人倾向于这种 因为复制过来就这样
r"C:\Users\Administrator\Desktop\FTP"路径格式:Windows系统,路径需要用双反斜杠 \\ 或者原始字符串 r"C:\FTP"。权限问题:确保你的Python脚本有权限访问和写入指定的目录。端口21的权限:默认FTP端口是21,但这个端口需要管理员权限才能监听。你可以选择使用其他端口(如2121),或者以管理员身份运行脚本。用户名、密码、目录
user", "password" "C:/Users/Administrator/Desktop/FTP/path/to/ftp""""def main():# 创建一个授权器,用于管理用户和权限authorizer = DummyAuthorizer()# 添加一个用户(用户名、密码、目录、权限)# 权限说明:#   elr = 更改目录、列出文件、读取文件#   m = 修改文件(上传、删除、重命名等)authorizer.add_user("user", "password", "C:/Users/Administrator/Desktop/FTP/path/to/ftp", perm="elrmw")# 添加匿名用户(可选)#authorizer.add_anonymous("/path/to/anonymous")# 创建FTP处理器handler = FTPHandlerhandler.authorizer = authorizer# 设置服务器地址和端口 server = FTPServer(("0.0.0.0", 21), handler)# 启动FTP服务器server.serve_forever()if __name__ == "__main__":main()

双击运行它 只要不报错 那么它的效果 和Quick Easy FTP Server V4.0.0.exe 是一样的

好了

接下来继续做 1.ftpupup.py [用于上传图ha片] 且同级目录有一张用于测试的图片

上传不需要安装外部库 标准python3.8 自带的:

#ftplib 不需要安装#    authorizer.add_user("user", "password", "C:/Users/Administrator/Desktop/FTP/path/to/ftp", perm="elrmw")from ftplib import FTPdef upload_file_to_ftp(ftp_server, username, password, local_file_path, remote_file_path):"""上传文件到FTP服务器:param ftp_server: FTP服务器地址:param username: 用户名:param password: 密码:param local_file_path: 本地文件路径:param remote_file_path: 远程文件路径"""try:# 创建FTP连接ftp = FTP(ftp_server)ftp.login(username, password)print(f"成功连接到FTP服务器: {ftp_server}")# 打开本地文件with open(local_file_path, 'rb') as file:# 使用STOR命令上传文件ftp.storbinary(f'STOR {remote_file_path}', file)print(f"文件上传成功: {remote_file_path}")except Exception as e:print(f"上传文件时发生错误: {e}")finally:# 关闭FTP连接ftp.quit()print("FTP连接已关闭")import os
import timePlk=os.getcwd()		# 示例用法
ftp_server = "127.0.0.1"  # 替换为你的FTP服务器地址
username = "user"      # 替换为你的FTP用户名
password = "password"      # 替换为你的FTP密码
local_file_path = fr"{Plk}/2025-01-21_02_29_24.png"  # 替换为本地图片文件路径while True:SaveFileName=time.strftime('%Y-%m-%d_%H_%M_%S');remote_file_path = fr"/{SaveFileName}_ftp.png"  # 替换为FTP服务器上的目标路径upload_file_to_ftp(ftp_server, username, password, local_file_path, remote_file_path)time.sleep(2)# 2秒钟 更新一次
# 

先运行服务端在运行客户端 可以看到 服务端回显 和 客户端的输出

现在一切正常 打开VM: 拖一个 图像源 脚本 输出图像

图像源设置图像 脚本 输出一个字符串 

out0 = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");

主要是为了获取当前时间用于保存文件名;

接下来输出图像模块:

输入源肯定是 图像源1.图像

存图使能打开; 保存原图打开;

原图路径设置好

[一定要设置原图路径][当打开启用FTP 时原图路径会作为]

借用V社区的话 原图路径:表示 VM 存图在本地哪个文件夹内,本例是在桌面新建了一个名为“中转站”的文件夹。这也说明了 VM 是先将图片存在本地,然后上载至服务端的逻辑过程。

[如果你的电脑足够慢 你可以清楚的看到 原图路径 在上传ftp的时候出现一张图 又消失]

原图命名 继承自  脚本1.out0[] 也就是上面脚本生成的时间字符串

启用FTP 打开

服务器IP 127.0.0.1

服务器端口:21

用户名:user

密码:password

编码格式:UINCODE

FTP路径:\ [一个反斜杠就是根目录 ][反斜杠后面加字符就会创建文件夹]

连接:打开 [ 网络正常 服务器正常  IP 端口 用户名 密码 编码格式 FTP路径 设置好才能打开]

输出使能:打开

像素格式:RGB24

最后吐槽一下 VM 模块参数 界面做的:

界面尺寸又小 ;选项又多,还不能缩放界面尺寸[左右不能改变尺寸算了上下也不能改变],更多选项只能通过 滚轮 或者滑动条 才能看到设置项

单个模块 一张截图又截不完整 得分好几张图截取 大大的不方便学习;

上截图吧.

py的ftp服务端要运行:  VM端点击执行 发现图已经传过去了 效果和1.ftpupup.py 是一样的

最后远程 喊话VM研发 就不能把模块做成这样吗 窗口尺寸可以改变 上下 左右能拖动改变窗口大小 一眼看完所有参数的.???????????   !!!!!

 最后 发现VM 运行FTP传图没有python快 猜测是因为负载原因;

但是VM FTP传图厉害的一点是 不管服务器在不在线 存图模块它都可以正常运行不报错 不红 一旦服务器在线 会自动将 没在线运行的图自动传过去.

此致 敬礼;


http://www.ppmy.cn/embedded/162424.html

相关文章

3、《Spring Boot 常见注解详解》

Spring Boot 核心注解详解 摘要 本文深入剖析 Spring Boot 常用注解,如SpringBootApplication、Controller、Service、Repository等,详细讲解它们的功能、使用场景及原理,帮助开发人员更好地理解和运用 Spring Boot 框架进行项目开发。 一…

单细胞学习(13)—— Seurat → Scanpy 分析流程

下面是一份从 Seurat 分析流程转到Scanpy 分析流程的简要笔记,涵盖了从数据读入到细胞注释的主要环节,并附上常用函数的Seurat vs. Scanpy 对照表。该笔记既可作为工作流程指南,也能在两个分析平台之间快速切换和比较。 Seurat → Scanpy 分析…

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…

VSCode Error Lens插件介绍(代码静态检查与提示工具)(vscode插件)

文章目录 VSCode Error Lens 插件介绍**功能概述****开发背景****使用方法****适用场景** VSCode Error Lens 插件介绍 功能概述 Error Lens 是一款增强 VS Code 错误提示的扩展工具,通过 内联显示错误和警告信息,直接定位代码问题,提升开发…

Ansible 自动化 Linux 运维:解放你的双手,让运维变得简单

Ansible 自动化 Linux 运维:解放你的双手,让运维变得简单 在现代 IT 运维中,随着系统规模的不断扩展,如何高效地管理和维护大量的服务器成为了一项巨大挑战。传统的手动操作不仅费时费力,还容易出错。而 Ansible 作为一款开源的自动化运维工具,凭借其易用性和强大的功能…

TDengine 性能测试工具 taosBenchmark

简介工具获取运行 无参数模式命令行模式配置文件模式 命令行参数配置文件参数 通用配置参数写入配置参数 数据库相关超级表相关标签列与数据列写入行为相关 查询配置参数 执行指定查询语句查询超级表 订阅配置参数数据类型对照表 配置文件示例 写入 JSON 示例查询 JSON 示例订阅…

探索高通骁龙游戏超分辨率技术:移动游戏的未来

高通技术公司于2024年推出了骁龙游戏超分辨率2(Snapdragon Game Super Resolution 2,简称GSR2),这是一项全新的骁龙Elite Gaming功能,旨在最大化移动游戏的性能和电池寿命。 什么是骁龙游戏超分辨率2(GSR2&…

linux软件编程

IO(文件) 文件: 一组相关数据的有序集合 文件名: 这组相关数据的一个名称 linux里面对文件的处理: 思想: 一切皆文件 ,文件用来存储数据(数据、指令) linux文件类型(7中) b -- block -- 块设备文件 --- 硬盘…