You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cognex In-Sight Visio Studio中基于实时序列号创建FTP文件夹

Cognex相机FTP存图:动态创建序列号文件夹的实现方案

针对你已经能生成序列号命名图片的情况,只需补充先创建对应FTP文件夹,再上传图片的逻辑即可,分两种常用场景实现:

一、VisionPro图形化配置(无需编码)

  • 确认你的ID/OCR工具已将读取到的序列号存入变量(比如SerialNum)。
  • 添加FTP Tool到作业流程,配置FTP服务器的地址、账号、密码。
  • 在FTP Tool的「Remote Path」中填写动态路径:/目标根目录/${SerialNum},勾选「Create Directory if Not Exists」选项——这会自动检测文件夹是否存在,不存在则创建。
  • 将本地的序列号命名图片(比如${SerialNum}.jpg)设为FTP Tool的本地文件路径,远程路径指向刚创建的文件夹,执行上传即可。

二、SDK开发实现(以C#为例)

假设你已经通过Cognex SDK获取到序列号serialNumber,且本地图片serialNumber.jpg已生成:

1. 创建FTP文件夹

string ftpServer = "ftp://your-server-address/";
string remoteFolder = $"images/{serialNumber}";
string folderUri = ftpServer + remoteFolder;

FtpWebRequest createFolderReq = (FtpWebRequest)WebRequest.Create(folderUri);
createFolderReq.Method = WebRequestMethods.Ftp.MakeDirectory;
createFolderReq.Credentials = new NetworkCredential("ftp-username", "ftp-password");

try
{
    using (FtpWebResponse resp = (FtpWebResponse)createFolderReq.GetResponse()) {}
}
catch (WebException ex)
{
    // 忽略"文件夹已存在"的异常,其他异常抛出
    var resp = (FtpWebResponse)ex.Response;
    if (resp.StatusCode != FtpStatusCode.ActionNotTakenFileUnavailable)
        throw;
}

2. 上传图片到指定文件夹

string localImgPath = $"C:/captured/{serialNumber}.jpg";
string remoteImgPath = $"{remoteFolder}/{serialNumber}.jpg";

FtpWebRequest uploadReq = (FtpWebRequest)WebRequest.Create(ftpServer + remoteImgPath);
uploadReq.Method = WebRequestMethods.Ftp.UploadFile;
uploadReq.Credentials = new NetworkCredential("ftp-username", "ftp-password");

using (Stream localStream = File.OpenRead(localImgPath))
using (Stream ftpStream = uploadReq.GetRequestStream())
{
    localStream.CopyTo(ftpStream);
}

注意事项

  • 确保FTP账号拥有创建文件夹和写入文件的权限;
  • 加入网络异常处理(比如超时、断连),避免程序崩溃;
  • 如果用其他语言(如VB.NET),逻辑一致,仅语法调整即可。

内容的提问来源于stack exchange,提问作者Andrey Kotelnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:21:17