当前位置: 首页 > article >正文

视觉控件怎么去做以及过程,怎么让系统自动到保存电脑?

怎么去用C#代码做到精准的存储,程序几分几秒运行了什么,以及保存的OK数目

保存OK的,并且是Excel文件类型

public void SaveData(string data,string result,string okor)
{
    string path = Directory.GetCurrentDirectory() + @"\Data";
    if(!Directory.Exists(path))
    {
        Directory.CreateDirectory (path);
    }
    // csv 是属性  Excel格式
    string filename = $"{path}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv";
    if(!File.Exists(filename))
    {
        //如果没有就不用判断了,直接需要创建文件,不用读,直接写入
        FileStream fileStream=new FileStream(filename,FileMode.Create,FileAccess.Write);
        //以默认的方式 去写这个文件
        StreamWriter streamWriter = new StreamWriter(fileStream,Encoding.Default);
        StringBuilder sth = new StringBuilder();
        sth.Append("时间").Append(",").Append("Data").Append(",").Append("Result");
        streamWriter.WriteLine(sth);
        streamWriter.Close();
        streamWriter.Dispose();
        fileStream.Close();
        fileStream.Dispose();
    }
    using(StreamWriter sw=new StreamWriter(filename,true,Encoding.Default))
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(DateTime.Now.ToString("HH-mm-ss")).Append(",").Append(data).Append(",").Append(result).Append(",").Append(okor);
        sw.WriteLine(sb);
    }

保存项目运行的过程

 public void SavaSoft(string LoadInfo)
 {
     //例子: "F:\Load\";
     string path = Directory.GetCurrentDirectory() + @"\Load";
     if (!Directory.Exists(path))
     {
         Directory.CreateDirectory(path);
     }
     //  "F:\Load\2025-02-05_Load.txt";
     string filename = path + $"\\{DateTime.Now.ToString("yyyy-MM-dd") + "_Load"}.txt";
     //  "2025.2.5 : xxxx这个工具完成"
     LoadInfo = DateTime.Now.ToString("HH:mm:ss:ff") + ":" + LoadInfo;
     if(!File.Exists(filename))
     {
         using (FileStream file = new FileStream(filename, FileMode.Create, FileAccess.Write))
         {
             using(StreamWriter sw = new StreamWriter(file))
             {
                 sw.WriteLine(LoadInfo);
                 sw.Close();
                 sw.Dispose();
             }
         }
     }
     using(StreamWriter sw=new StreamWriter(filename,true,Encoding.Default))
     {
         sw.WriteLine(LoadInfo);
     }

 }

保存项目不良的图片

  public void SaveImage(ICogImage image)
  {
      string path = Directory.GetCurrentDirectory() + @"\NgImage";
      IsExistsOrCreateFolder(path);
      string filename=$"{DateTime.Now.ToString("yyyyMMddHHmmss")}.jpg";
      CogImageFileTool tool = new CogImageFileTool();
      tool.InputImage = image;
      tool.Operator.Open($"{path}\\{filename}", CogImageFileModeConstants.Write);
      tool.Run();
  }

数目的收集,良率的变化

   private void math()
   {
       Stopwatch sw = new Stopwatch();
       sw.Start();
       if (mTb.RunStatus.Result == CogToolResultConstants.Accept)
       {
           Console.WriteLine("检测成功---");
           ShowMsg("检测成功----");
           cogRecordDisplay2.Record = null;
           cogRecordDisplay2.Record = mTb.CreateLastRunRecord().SubRecords[1];
           cogRecordDisplay2.Fit();
           double radius = (double)mTb.Outputs["Radius"].Value;
           string result = (string)mTb.Outputs["Result"].Value;
           ShowMsg($"检测完成的结果{radius.ToString("F2")},{result},检测时间{sw.ElapsedMilliseconds}ms");
           if (radius > 799 && radius < 803)
           {
               result = "OK";
           }
           else
           {
               result = "NG";
           }
           serialPort.Write(result);
           ShowMsg($"检测的结果是{result}");
           savetotal.SaveData("半径", radius.ToString("F2"), result);
           if (result == "OK")
           {
               Console.WriteLine("Pass");
               total.Numtotal++;
               total.Numok++;
               string QC = (total.Numok / total.Numtotal * 100).ToString("F2") + "%";
               num.BeginInvoke(new Action<string>((str) =>
               {
                   num.Text = str;
               }), total.Numtotal.ToString());
               pass.BeginInvoke(new Action<string>((str) =>
               {
                   pass.Text = str;
               }), total.Numok.ToString());
               percentage.BeginInvoke(new Action<string>(str =>
               {
                   percentage.Text = str;
               }), QC.ToString());
           }

       }
       else
       {
           Console.WriteLine("识别错误,此物料为NG");
           serialPort.Write("----NG----");
           savetotal.SaveImage(newImage);
           total.Numtotal++;
           string QC = (total.Numok / total.Numtotal * 100).ToString("F2") + "%";
           num.BeginInvoke(new Action<string>((str) =>
           {
               num.Text = str;
           }), total.Numtotal.ToString());
           percentage.BeginInvoke(new Action<string>(str =>
           {
               percentage.Text = str;
           }), QC.ToString());
       }
   }


http://www.kler.cn/a/533243.html

相关文章:

  • Hot100之堆
  • 冰蝎v4.0.5 来啦
  • windows linux常用基础命令
  • RAG 与历史信息相结合
  • Unity GetLocalizedString()失效问题
  • SQLModel入门
  • 配置@别名路径,把@/ 解析为 src/
  • 响应式编程_03响应式编程在Netflix Hystrix 、Spring Cloud Gateway、Spring WebFlux中的应用
  • java进阶文章链接
  • Page Assist - 本地Deepseek模型 Web UI 的安装和使用
  • SpringBoot开发(四)SpringBoot配置文件
  • 【数据可视化-14】Boss招聘数据分析岗位的可视化分析
  • C++11详解(二) -- 引用折叠和完美转发
  • 使用C++构建一个优先级队列
  • 代理模式的作用
  • 从 DeepSeek R1 中提取数学推理数据,使用 CAMEL
  • 华为手机nova9,鸿蒙系统版本4.2.0.159,智慧助手.今天版本是14.x,如何卸载智慧助手.今天?
  • Python进行模型优化与调参
  • SGlang 专为大模型设计的高效服务框架
  • DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)
  • AI透明化与全球政治格局的发展:如何避免AI被人为操控
  • 电商用户画像数据可视化分析
  • 基于MODIS/Landsat/Sentinel/国产卫星遥感数据与DSSAT作物模型同化的作物产量估算
  • 使用 Redisson 实现分布式并发限流
  • Spring 面试题【每日20道】【其三】
  • 力扣73矩阵置零