视觉控件怎么去做以及过程,怎么让系统自动到保存电脑?
怎么去用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());
}
}