Add Comments, Bug Fix

This commit is contained in:
YuYang Shen
2025-03-19 11:30:10 +08:00
parent 18a986a128
commit 9bdb2ea937
11 changed files with 477 additions and 489 deletions
Binary file not shown.
@@ -1,16 +1,16 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\WORK\\ManLin\\Verify\\Prometheus\\1KS_FT_EngineeringMachine\\UserProgram_time\\",
"WorkspaceRootPath": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{E96B1A19-D109-4F67-B1AA-5BF15E580D77}|Testrong.User.Program\\Testrong.User.Program.csproj|d:\\work\\manlin\\verify\\prometheus\\1ks_ft_engineeringmachine\\userprogram_time\\testrong.user.program\\userprogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"AbsoluteMoniker": "D:0:0:{E96B1A19-D109-4F67-B1AA-5BF15E580D77}|Testrong.User.Program\\Testrong.User.Program.csproj|d:\\work\\manlin\\verify\\userprogram_time\\testrong.user.program\\userprogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{E96B1A19-D109-4F67-B1AA-5BF15E580D77}|Testrong.User.Program\\Testrong.User.Program.csproj|solutionrelative:testrong.user.program\\userprogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\ProgramData\\Testrong\\ATE_Tester\\setting\\NLog.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{E96B1A19-D109-4F67-B1AA-5BF15E580D77}|Testrong.User.Program\\Testrong.User.Program.csproj|D:\\WORK\\ManLin\\Verify\\Prometheus\\1KS_FT_EngineeringMachine\\UserProgram_time\\testrong.user.program\\keysight53220a.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"AbsoluteMoniker": "D:0:0:{E96B1A19-D109-4F67-B1AA-5BF15E580D77}|Testrong.User.Program\\Testrong.User.Program.csproj|D:\\WORK\\ManLin\\Verify\\UserProgram_time\\testrong.user.program\\keysight53220a.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{E96B1A19-D109-4F67-B1AA-5BF15E580D77}|Testrong.User.Program\\Testrong.User.Program.csproj|solutionrelative:testrong.user.program\\keysight53220a.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
@@ -21,8 +21,12 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 3,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Document",
"DocumentIndex": 1,
@@ -37,9 +41,9 @@
"$type": "Document",
"DocumentIndex": 2,
"Title": "Keysight53220A.cs",
"DocumentMoniker": "D:\\WORK\\ManLin\\Verify\\Prometheus\\1KS_FT_EngineeringMachine\\UserProgram_time\\Testrong.User.Program\\Keysight53220A.cs",
"DocumentMoniker": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\Keysight53220A.cs",
"RelativeDocumentMoniker": "Testrong.User.Program\\Keysight53220A.cs",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\Prometheus\\1KS_FT_EngineeringMachine\\UserProgram_time\\Testrong.User.Program\\Keysight53220A.cs",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\Keysight53220A.cs",
"RelativeToolTip": "Testrong.User.Program\\Keysight53220A.cs",
"ViewState": "AQIAAHMAAAAAAAAAAAAYwKkAAAAiAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -49,11 +53,11 @@
"$type": "Document",
"DocumentIndex": 0,
"Title": "UserProgram.cs",
"DocumentMoniker": "D:\\WORK\\ManLin\\Verify\\Prometheus\\1KS_FT_EngineeringMachine\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs",
"DocumentMoniker": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs",
"RelativeDocumentMoniker": "Testrong.User.Program\\UserProgram.cs",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\Prometheus\\1KS_FT_EngineeringMachine\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs*",
"RelativeToolTip": "Testrong.User.Program\\UserProgram.cs*",
"ViewState": "AgIAAOADAAAAAAAAAAAQwPUDAAAYAAAAAAAAAA==",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs",
"RelativeToolTip": "Testrong.User.Program\\UserProgram.cs",
"ViewState": "AgIAAH8KAAAAAAAAAAAowK4KAAA3AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-18T12:27:43.78Z",
"EditorCaption": ""
@@ -21,8 +21,12 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 3,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Document",
"DocumentIndex": 1,
@@ -53,7 +57,7 @@
"RelativeDocumentMoniker": "Testrong.User.Program\\UserProgram.cs",
"ToolTip": "D:\\WORK\\ManLin\\Verify\\UserProgram_time\\Testrong.User.Program\\UserProgram.cs",
"RelativeToolTip": "Testrong.User.Program\\UserProgram.cs",
"ViewState": "AgIAALAKAAAAAAAAAAAQwMUKAAApAAAAAAAAAA==",
"ViewState": "AgIAABYMAAAAAAAAAAAAwCcMAAAeAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-18T12:27:43.78Z",
"EditorCaption": ""
+278 -341
View File
@@ -1,39 +1,24 @@
using System.Collections.Generic;
using ExternalCalibration;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Remoting.Contexts;
using System.Text;
using System.Threading;
using Testrong.Core.Common;
using Testrong.Core.Communicate;
using Testrong.Core.Primitives.Extend;
using Testrong.Core.Primitives;
using Testrong.Core.Model.ACTiming;
using Testrong.Core.Model.ChannelMap;
using Testrong.Core.Model.Dps;
using Testrong.Core.Model.Enums;
using Testrong.Core.Model.Pattern;
using Testrong.Core.Model.Ppmu;
using Testrong.Core.Model.Relay;
using Testrong.Core.Primitives.TestrongSystem;
using Testrong.Core.Model.Dps;
using Testrong.Core.Model.ChannelMap;
using Testrong.Core.Model.Pattern;
using Testrong.Core.Model.Enums;
using Testrong.Core.Model.ACTiming;
using Testrong.Core.Primitives.Interface;
using System;
using System.Text;
using System.IO;
using System.Threading;
using ExternalCalibration;
using System.Runtime.Remoting.Contexts;
using System.Collections;
using Testrong.Core.Model;
using System.Globalization;
using Testrong.Core.Primitives.TestrongSystem.Obsolete;
using System.ComponentModel;
using System.Xml.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Testrong.Core.Model.Binning;
using System.Runtime.CompilerServices;
using System.Xml.Serialization;
using System.Diagnostics.Contracts;
using Testrong.Core.Primitives;
using Testrong.Core.Primitives.Extend;
using Testrong.Core.Primitives.Service.AcTiming;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using Testrong.Core.Primitives.TestrongSystem;
namespace Testrong.User.Program
{
@@ -480,8 +465,8 @@ namespace Testrong.User.Program
List<TestInfoSet> TestInfo = new List<TestInfoSet>();
int port = 200;
string ksightConnStr = "GPIB1::22::INSTR";
#endregion
TestVersion SelectTestVersion = Select_Version[Readjson(CONFIG_JSON_PATH).Version];
#endregion
#region
@@ -496,7 +481,23 @@ namespace Testrong.User.Program
return get;
}
public void metadata_handler(StreamWriter swdata,int SlotNum, List<int> slotList, string arm_dna, IFlowRunnerContext context, bool init_Flag, string Type = "NULL", int Channel = -1, string Mode = "NULL", string Rload = "NaN", string Range = "N/A", string filepath = "N/A", string filetime = "N/A")
/*
* StreamWriter swdata: File Handler, Should be Initialized ahead,
* int SlotNum: Current Slot Number,
* List<int> slotList: Slot List,
* string arm_dna: DNA Data from Zynq,
* IFlowRunnerContext context: info from ATE Software,
* bool init_Flag: choose from Header to Body| True=Header/False=Body,
* string Type:[OPTIONAL] Only need if init_Flag==False, Channel Type, Possible Value="PMU","DPS", "NULL"(Default),
* int Channel:[OPTIONAL] Only need if init_Flag==False, Channel Number, Default = -1,
* string Mode:[OPTIONAL] Only need if init_Flag==False, Test Mode, Possible Value="FVMV","FVMI","FIMV","FIMI","FZMV"(PMU Only), "NULL"(Default),
* string Rload:[OPTIONAL] Only need if init_Flag==False,Resistance Load, Default = "NaN",
* string Range:[OPTIONAL] Only need if init_Flag==False,Range, Possible Value="5uA", "20uA", "200uA", "2mA", "60mA", "1A"(DPS Only), Default = "N/A",
* string filepath:[OPTIONAL] Only need if init_Flag==False, CSV File Path, Default = "N/A",
* string filetime:[OPTIONAL] Only need if init_Flag==False, CSV File Creation Time, Default = "N/A"
*/
public void Metadata_handler(StreamWriter swdata, int SlotNum, List<int> slotList, string arm_dna, IFlowRunnerContext context, bool init_Flag, string Type = "NULL", int Channel = -1, string Mode = "NULL", string Rload = "NaN", string Range = "N/A", string filepath = "N/A", string filetime = "N/A")
{
//Are We Writing the header of MetaData?
if (init_Flag == true)
@@ -604,6 +605,11 @@ namespace Testrong.User.Program
else return -1;
}
private int GetDPSTempSensorIndex(int channel)
{
return ((channel-1)/4);
}
public int GetFileSize(string path)
{
System.IO.FileInfo fileInfo = null;
@@ -642,7 +648,8 @@ namespace Testrong.User.Program
foreach (FileInfo file in di.EnumerateFiles())
{
file.Delete();
};
}
;
}
private string[] GetAllPmuPins()
{
@@ -830,15 +837,16 @@ namespace Testrong.User.Program
* double[] ForceValue: ForceValue
* double[] AteMeasure: ATE Measure Value
* double[] DmmMeasure: DMM Measure Value
* double[] TempValue: Temperature Value(May Not Available)
*/
public void WriteSingleFile(string filename,int slot, string dna, string type,int channel, string mode, string rload, double[,] extR, string range, double[] ForceValue, double[] AteMeasure, double[] DmmMeasure)
public void WriteSingleFile(string filename, int slot, string dna, string type, int channel, string mode, string rload, double[,] extR, string range, double[] ForceValue, double[] AteMeasure, double[] DmmMeasure, double[] TempValue)
{
StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8);
sw.AutoFlush = true;
sw.Write("Tester_Name,Foo\n");
sw.Write($"Slot_No,{slot}\n");
sw.Write($"Board_Dna,{dna}\n");
sw.Write("Channel_Type,{type}\n");
sw.Write($"Channel_Type,{type}\n");
sw.Write($"Channel_No,{channel}\n");
sw.Write($"Mode,{mode}\n");
sw.Write($"R_Load,{rload}\n");
@@ -895,7 +903,7 @@ namespace Testrong.User.Program
sw.Write($"{(DmmMeasure[writeLine] / Convert.ToDouble(rload)):F15},");
}
}
sw.Write($"{0:F8}\n");
sw.Write($"{TempValue[writeLine]:F8}\n");
}
sw.Flush();
sw.Close();
@@ -1296,64 +1304,21 @@ namespace Testrong.User.Program
}
//-----Start Slot Number-----
StreamWriter swdata;
if (SlotNum == slotList[0])
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8)
{
dmm.InitDMM(ksightConnStr);
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
swdata.WriteLine("Tester_Name,Board_Id,Slot_Ip,Stil_Version");
for (int w = 0; w < 12; w++)
{
if (w == (slotList[0] - 1))
{
swdata.WriteLine($"Slot{SlotNum},{arm_dna},{context.Communicator.ServerIP},V1.0.0");
}
else
{
swdata.WriteLine($"Slot{(w + 1)}");
}
}
for (int i = 0; i < 1; i++)
{
swdata.WriteLine();
}
swdata.Write("Slot_Dna,Channel_Type,Channel_No,Mode,R_Load,I_Range,V_Range,Meas_Range,File_Path,File_Time\n");
}
else
{
int Cried = slotList.FindIndex(x => x.Equals(SlotNum));
while (true)
{
Thread.Sleep(1000);
if (File.Exists(EXT_CAL_PATH + slotList[Cried - 1] + ".flag")) //Wait until previous thread flags completion
{
File.Delete(EXT_CAL_PATH + slotList[Cried - 1] + ".flag");
break;
}
}
File.Move(METADATA_PATH, EXT_CAL_PATH + "metadata_temp" + ".csv");
StreamReader sr = new StreamReader(EXT_CAL_PATH + "metadata_temp" + ".csv", Encoding.UTF8);
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
int line = 0;
while (!sr.EndOfStream)
{
string tmp = sr.ReadLine();
if (line == slotList[Cried])
{
swdata.WriteLine("Slot" + SlotNum + "," + arm_dna + "," + context.Communicator.ServerIP + "," + "V1.0.0");
}
else
{
swdata.WriteLine(tmp);
}
line++;
}
sr.Close();
File.Delete(EXT_CAL_PATH + "metadata_temp" + ".csv");
dmm.InitDMM(ksightConnStr);
}
AutoFlush = true
};
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
arm_dna: arm_dna,
context: context,
init_Flag: true
);
dmm.InitDMM(ksightConnStr);
string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
for (int loopk = 0; loopk < 256; loopk++)
{
@@ -1364,25 +1329,20 @@ namespace Testrong.User.Program
double VoltageStep = VoltageStepDefault;
string filepath = "Slot" + SlotNum + "_PMU_" + "ch" + ChannelPmu[loopk] + "_" + "FVMV" + "_" + "Hi-Z" + "_" + "2mA" + ".csv";
string filename = EXT_CAL_PATH + filepath;
StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8);
int ch = ChannelPmu[loopk];
sw.AutoFlush = true;
sw.Write("Tester_Name,Foo\n");
sw.Write($"Slot_No,{SlotNum}\n");
sw.Write($"Board_Dna,{arm_dna}\n");
sw.Write("Channel_Type,PMU\n");
sw.Write($"Channel_No,{ChannelPmu[loopk]}\n");
sw.Write($"Mode,FVMV\n");
sw.Write($"R_Load,Hi-Z\n");
sw.Write($"R_Int,{0}\n");
sw.Write($"R_Ext,{ExtBoard_Res[ChannelPmu[loopk] - 1, SlotNum - 1]}\n");
sw.Write($"I_Range,2mA\n");
sw.Write("V_Range,20V\n");
sw.Write("Meas_Range,13V\n");
sw.Write("\n");
sw.Write("Force Value,ATE Measure,DMM Measure,Temperature\n");
StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8)
{
AutoFlush = true
};
double[] AteMeasure = new double[SampliCount];
double[] ForceValue = new double[SampliCount];
double[] DMMValue = new double[SampliCount];
double[] TempValue = new double[SampliCount];
extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, ExtCaliLoad.no_load, 0);//change channel
if (loopk == 0)
{
DelayHelper.Sleep(20);
@@ -1390,31 +1350,60 @@ namespace Testrong.User.Program
for (int p = 0; p < SampliCount; p++)
{
PPMU.Force(PmuPinName, ForceVoltage, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
sw.Write($"{ForceVoltage:F8},");
Thread.Sleep(20);
List<SiteInfo> siList = PPMU.Measure(PmuPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMV"), 128, 100);
double chResult = GetATEChannelMeasure(siList, PmuPinName);
sw.Write($"{chResult:F8},");
double dmmRead = dmm.GetDmmMeasureData(KeysightDMM3458A.KeysightMeasMode.VOLT, 1, 7.5);//dmm 3458A read
sw.Write($"{dmmRead:F8},");
double[] readTemp = PPMU.ReadTemperature();
sw.Write($"{readTemp[GetPMUTempSensorIndex(ChannelPmu[loopk])]:F8}\n");
double chTemp = readTemp[GetPMUTempSensorIndex(ch)];
ForceValue[p] = ForceVoltage;
AteMeasure[p] = chResult;
DMMValue[p] = dmmRead;
TempValue[p] = chTemp;
ForceVoltage += VoltageStep;
}
PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
WriteSingleFile(
filename: filename,
slot: SlotNum,
dna: arm_dna,
type: "PMU",
channel: ch,
mode: "FVMV",
rload: "Hi-Z",
extR: ExtBoard_Res,
range: "2mA",
ForceValue: ForceValue,
AteMeasure: AteMeasure,
DmmMeasure: DMMValue,
TempValue:TempValue
);
sw.Flush();
sw.Close();
swdata.Write($"{arm_dna},");
swdata.Write("PMU,");
swdata.Write($"{ChannelPmu[loopk]},");
swdata.Write($"FVMV,");
swdata.Write($"Hi-Z,");
swdata.Write($"2mA,");
swdata.Write("20V,");
swdata.Write("13V,");
swdata.Write($"{filepath},");
swdata.Write($"{filetime}\n");
swdata.Flush();
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
arm_dna: arm_dna,
context: context,
init_Flag: false,
Type: "PMU",
Channel: ch,
Mode: "FVMV",
Rload: "Hi-Z",
Range: "2mA",
filepath: filepath,
filetime: filetime
);
}
if (SlotNum < slotList[slotList.Count - 1])
{
@@ -1589,77 +1578,22 @@ namespace Testrong.User.Program
}
//-----Start Slot Number-----
StreamWriter swdata;
if (SlotNum == slotList[0])
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8)
{
AutoFlush = true
};
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
arm_dna: arm_dna,
context: context,
init_Flag:true
);
dmm.InitDMM(ksightConnStr);
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
swdata.WriteLine("Tester_Name,Board_Id,Slot_Ip,Stil_Version");
for (int w = 0; w < 12; w++)
{
if (w == (slotList[0] - 1))
{
swdata.WriteLine($"Slot{SlotNum},{arm_dna},{context.Communicator.ServerIP},V1.0.0");
}
else
{
swdata.WriteLine($"Slot{(w + 1)}");
}
}
for (int i = 0; i < 1; i++)
{
swdata.WriteLine();
}
swdata.Write("Slot_Dna,Channel_Type,Channel_No,Mode,R_Load,I_Range,V_Range,Meas_Range,File_Path,File_Time\n");
}
else
{
int Cried = slotList.FindIndex(x => x.Equals(SlotNum));
while (true)
{
Thread.Sleep(1000);
if (File.Exists(EXT_CAL_PATH + slotList[Cried - 1] + ".flag")) //Wait until previous thread flags completion
{
File.Delete(EXT_CAL_PATH + slotList[Cried - 1] + ".flag");
break;
}
}
File.Move(METADATA_PATH, EXT_CAL_PATH + "metadata_temp" + ".csv");
StreamReader sr = new StreamReader(EXT_CAL_PATH + "metadata_temp" + ".csv", Encoding.UTF8);
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
int line = 0;
while (!sr.EndOfStream)
{
string tmp = sr.ReadLine();
if (line == slotList[Cried])
{
swdata.WriteLine("Slot" + SlotNum + "," + arm_dna + "," + context.Communicator.ServerIP + "," + "V1.0.0");
}
else
{
swdata.WriteLine(tmp);
}
line++;
}
sr.Close();
File.Delete(EXT_CAL_PATH + "metadata_temp" + ".csv");
dmm.InitDMM(ksightConnStr);
}
extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, 1, ExternalCalibrationMode.Channel, 1, ExtCaliVI.V, ExtCaliLoad.RC_RL7, 0);
double rload = GetRloadValue(dmm, 2000, 5);
string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
Dictionary<int, int> M013_PMU = new Dictionary<int, int>()
{
{166,114 },
{167,113 },
{168,112 },
{169,111 },
{230,242 },
{231,241 },
{232,240 },
{233,239 }
};
for (int loopk = 0; loopk < 256; loopk++)
{
double ForceVoltage = -2;
@@ -1709,17 +1643,22 @@ namespace Testrong.User.Program
PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, PpmuIRange._2mA, VRange.Normal);
sw.Flush();
sw.Close();
swdata.Write($"{arm_dna},");
swdata.Write("PMU,");
swdata.Write($"{ChannelPmu[loopk]},");
swdata.Write($"FVMV,");
swdata.Write($"{rload},");
swdata.Write($"2mA,");
swdata.Write("20V,");
swdata.Write("13V,");
swdata.Write($"{filepath},");
swdata.Write($"{filetime}\n");
swdata.Flush();
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
arm_dna: arm_dna,
context: context,
init_Flag: false,
Type: "PMU",
Channel: ch,
Mode: "FVMV",
Rload: rload.ToString(),
Range: "2mA",
filepath: filepath,
filetime: filetime
);
}
swdata.Flush();
swdata.Close();
@@ -2234,12 +2173,14 @@ namespace Testrong.User.Program
throw ex;
}
//-----Start Slot Number-----
//Write Meta DATA
// Write MetaData.csv Header
StreamWriter swdata;
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8)
{
AutoFlush = true
};
metadata_handler(
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
@@ -2270,6 +2211,9 @@ namespace Testrong.User.Program
Dictionary<int, double[]> AteMeasureDir = new Dictionary<int, double[]>();
Dictionary<int, double[]> ForceValueDir = new Dictionary<int, double[]>();
Dictionary<int, double[]> DmmMeasureDir = new Dictionary<int, double[]>();
Dictionary<int, double[]> TempValueDir = new Dictionary<int, double[]>();
List<int> testCh = new List<int>();
ExtCaliLoad Rcut = (Mode == "FVMV") ? ExtCaliLoad.no_load : Rcut_MIFI[Range];
string Rload = (Mode == "FVMV" || Mode == "FZMV") ? "Hi-Z" : strRloadFvmi[Range];
@@ -2382,6 +2326,11 @@ namespace Testrong.User.Program
string[] PmuPinName_FZ = new string[1];
string[] PmuPinName_FV = new string[1];
string[] PmuPinName_FZFV = new string[2];
double[] AteMeasure = new double[SampliCount];
double[] ForceValue = new double[SampliCount];
double[] TempValue = new double[SampliCount];
for (int loopk = 0; loopk < ListChannels.Count/*ListChannels.Count*/; loopk++)//-----Loop Channel-----
{
if (Type == "PMU")
@@ -2424,8 +2373,6 @@ namespace Testrong.User.Program
ForceVoltage = VoltageInitialSet;
}
}
double[] AteMeasure = new double[5];
double[] ForceValue = new double[5];
switch (Info[loopi].Mode)
{
case "FVMV":
@@ -2441,6 +2388,9 @@ namespace Testrong.User.Program
dmm.TriggerSingleMeasure();
List<SiteInfo> siList = PPMU.Measure(PmuPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMV"), testParaSet_pmu_fvmv[Range].avgTimes, testParaSet_pmu_fvmv[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, PmuPinName);
double[] readTemp = PPMU.ReadTemperature();
double chTemp = readTemp[GetPMUTempSensorIndex(ch)];
TempValue[p] = chTemp;
AteMeasure[p] = chResult;
ForceValue[p] = ForceVoltage;
ForceVoltage += VoltageStep;
@@ -2462,6 +2412,9 @@ namespace Testrong.User.Program
dmm.TriggerSingleMeasure();
List<SiteInfo> siList = PPMU.Measure(PmuPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMI"), testParaSet_pmu_fvmi[Range].avgTimes, testParaSet_pmu_fvmi[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, PmuPinName);
double[] readTemp = PPMU.ReadTemperature();
double chTemp = readTemp[GetPMUTempSensorIndex(ch)];
TempValue[p] = chTemp;
AteMeasure[p] = chResult;
ForceValue[p] = ForceVoltage / (Convert.ToDouble(RlPmuFv[Range]) + ExtBoard_Res[ch - 1, SlotNum - 1]);
ForceVoltage += VoltageStep;
@@ -2482,6 +2435,9 @@ namespace Testrong.User.Program
dmm.TriggerSingleMeasure();
List<SiteInfo> siList = PPMU.Measure(PmuPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMI"), testParaSet_pmu_fvmi[Range].avgTimes, testParaSet_pmu_fvmi[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, PmuPinName);
double[] readTemp = PPMU.ReadTemperature();
double chTemp = readTemp[GetPMUTempSensorIndex(ch)];
TempValue[p] = chTemp;
AteMeasure[p] = chResult;
ForceValue[p] = ForceVoltage / (Convert.ToDouble(RlPmuFv[Range]) + ExtBoard_Res[ch - 1, SlotNum - 1]);
if (RangesPmu[Range] == PpmuIRange._20uA)
@@ -2524,6 +2480,9 @@ namespace Testrong.User.Program
double chResult = GetATEChannelMeasure(siList, PmuPinName);
AteMeasure[p] = chResult / (Convert.ToDouble(RlPmuFi[Range]) + ExtBoard_Res[ch - 1, SlotNum - 1]);
ForceValue[p] = ForceCurrent;
double[] readTemp = PPMU.ReadTemperature();
double chTemp = readTemp[GetPMUTempSensorIndex(ch)];
TempValue[p] = chTemp;
}
PPMU.Force(PmuPinName, 0, PpmuMode.FVMV, RangesPmu[Range], VRange.Normal);
Thread.Sleep(10);
@@ -2543,6 +2502,9 @@ namespace Testrong.User.Program
dmm.TriggerSingleMeasure();
List<SiteInfo> siList = PPMU.Measure(PmuPinName_FZ, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMV"), testParaSet_pmu_fzmv[Range].avgTimes, testParaSet_pmu_fzmv[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, PmuPinName_FZ);
double[] readTemp = PPMU.ReadTemperature();
double chTemp = readTemp[GetPMUTempSensorIndex(ch)];
TempValue[p] = chTemp;
AteMeasure[p] = chResult;
ForceValue[p] = ForceVoltage;
ForceVoltage += VoltageStep;
@@ -2557,9 +2519,10 @@ namespace Testrong.User.Program
break;
default: break;
}
AteMeasureDir.Add(ListChannels[loopk], AteMeasure);
ForceValueDir.Add(ListChannels[loopk], ForceValue);
testCh.Add(ListChannels[loopk]);
AteMeasureDir.Add(ch, AteMeasure);
ForceValueDir.Add(ch, ForceValue);
TempValueDir.Add(ch, TempValue);
testCh.Add(ch);
}
else if (Type == "DPS")
{
@@ -2596,8 +2559,6 @@ namespace Testrong.User.Program
}
break;
}
double[] AteMeasure = new double[5];
double[] ForceValue = new double[5];
switch (Info[loopi].Mode)
{
case "FVMV":
@@ -2615,6 +2576,9 @@ namespace Testrong.User.Program
dmm.TriggerSingleMeasure();
List<SiteInfo> siList = DPS.Measure(DpsPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMV"), testParaSet_dps_fvmv[Range].avgTimes, testParaSet_dps_fvmv[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, DpsPinName);
double[] readTemp = DPS.ReadTemperature();
double chTemp = readTemp[GetDPSTempSensorIndex(ch)];
TempValue[p] = chTemp;
ForceValue[p] = ForceVoltage;
AteMeasure[p] = chResult;
ForceVoltage += VoltageStep;
@@ -2642,6 +2606,9 @@ namespace Testrong.User.Program
Thread.Sleep(50);
List<SiteInfo> siList = DPS.Measure(DpsPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMI"), testParaSet_dps_fvmi[Range].avgTimes, testParaSet_dps_fvmi[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, DpsPinName);
double[] readTemp = DPS.ReadTemperature();
double chTemp = readTemp[GetDPSTempSensorIndex(ch)];
TempValue[p] = chTemp;
ForceValue[p] = CurrValue;
AteMeasure[p] = chResult;
ForceVoltage += VoltageStep;
@@ -2678,6 +2645,9 @@ namespace Testrong.User.Program
}
List<SiteInfo> siList = DPS.Measure(DpsPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FVMI"), testParaSet_dps_fvmi[Range].avgTimes, testParaSet_dps_fvmi[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, DpsPinName);
double[] readTemp = DPS.ReadTemperature();
double chTemp = readTemp[GetDPSTempSensorIndex(ch)];
TempValue[p] = chTemp;
ForceValue[p] = CurrValue;
AteMeasure[p] = chResult;
ForceVoltage += VoltageStep;
@@ -2732,6 +2702,9 @@ namespace Testrong.User.Program
}
List<SiteInfo> siList = DPS.Measure(DpsPinName, true, context.BinHandler.GetBinningByTestSuite("ExtCalibration_FIMV"), testParaSet_dps_fimv[Range].avgTimes, testParaSet_dps_fimv[Range].samDelay);
double chResult = GetATEChannelMeasure(siList, DpsPinName);
double[] readTemp = DPS.ReadTemperature();
double chTemp = readTemp[GetDPSTempSensorIndex(ch)];
TempValue[p] = chTemp;
ForceValue[p] = ForceCurrent;
AteMeasure[p] = chResult / Convert.ToDouble(RlDpsFi[Range]);
}
@@ -2741,9 +2714,10 @@ namespace Testrong.User.Program
break;
default: break;
}
AteMeasureDir.Add(ListChannels[loopk], AteMeasure);
ForceValueDir.Add(ListChannels[loopk], ForceValue);
testCh.Add(ListChannels[loopk]);
AteMeasureDir.Add(ch, AteMeasure);
ForceValueDir.Add(ch, ForceValue);
TempValueDir.Add(ch, TempValue);
testCh.Add(ch);
}
}
@@ -2774,10 +2748,11 @@ namespace Testrong.User.Program
range: Range,
ForceValue: ForceValueDir[ch],
AteMeasure: AteMeasureDir[ch],
DmmMeasure: DmmMeasureDir[ch]
DmmMeasure: DmmMeasureDir[ch],
TempValue: TempValueDir[ch]
);
metadata_handler(
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
@@ -2817,10 +2792,11 @@ namespace Testrong.User.Program
range: Range,
ForceValue: ForceValueDir[ch],
AteMeasure: AteMeasureDir[ch],
DmmMeasure:DmmMeasureDir[ch]
DmmMeasure: DmmMeasureDir[ch],
TempValue: TempValueDir[ch]
);
metadata_handler(
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
@@ -2910,74 +2886,7 @@ namespace Testrong.User.Program
}
}
#endregion
[TestrongTestCase]
public void Reset(IFlowRunnerContext context)
{
ExternalCalibrationReset(context);
}
[TestrongTestCase]
public void DmmGetRes(IFlowRunnerContext context)
{
DmmGetResValue(context, SelectTestVersion);
}
[TestrongTestCase]
public void Ext_Calibration_Pre(IFlowRunnerContext context)
{
ExternalCalibrationCollect(context, SelectTestVersion, true, true);
}
[TestrongTestCase]
public void Write_CalFiles(IFlowRunnerContext context)
{
ExternalCalibrationWriteCalFiles(context);
}
[TestrongTestCase]
public void Ext_Calibration_Post(IFlowRunnerContext context)
{
ExternalCalibrationCollect(context, SelectTestVersion, true, false);
}
[TestrongTestCase]
public void RintReset(IFlowRunnerContext context)
{
Rint_Reset(context);
}
[TestrongTestCase]
public void Rint_Pre(IFlowRunnerContext context)
{
Rint_FVMV_2mA_Pre(context, SelectTestVersion);
}
[TestrongTestCase]
public void RintDataUpload(IFlowRunnerContext context)
{
Rint_DataUpload(context);
}
[TestrongTestCase]
public void Rint_Post(IFlowRunnerContext context)
{
Rint_FVMV_2mA_Post(context, SelectTestVersion);
}
[TestrongTestCase]
public void PmurUpload(IFlowRunnerContext context)
{
Pmur_Upload(context);
}
[TestrongTestCase]
public void ReTest(IFlowRunnerContext context)
{
ExternalCalibrationCollect(context, SelectTestVersion, false, false);
}
[TestrongTestCase]
public void Freq_Test(IFlowRunnerContext context)
{
ExternalCalibrationFreqCollect(context, SelectTestVersion);
}
[TestrongTestCase]
public void Rint_FVMI_Gnd(IFlowRunnerContext context)
void Rint_GND_FVMI_2mA(IFlowRunnerContext context)
{
List<int> ChannelPmu = new List<int>();
for (int m = 0; m < 256; m++)
@@ -3028,61 +2937,18 @@ namespace Testrong.User.Program
}
//-----Start Slot Number-----
StreamWriter swdata;
if (SlotNum == slotList[0])
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8)
{
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
swdata.WriteLine("Tester_Name,Board_Id,Slot_Ip,Stil_Version");
for (int w = 0; w < 12; w++)
{
if (w == (slotList[0] - 1))
{
swdata.WriteLine($"Slot{SlotNum},{arm_dna},{context.Communicator.ServerIP},V1.0.0");
}
else
{
swdata.WriteLine($"Slot{(w + 1)}");
}
}
for (int i = 0; i < 1; i++)
{
swdata.WriteLine();
}
swdata.Write("Slot_Dna,Channel_Type,Channel_No,Mode,R_Load,I_Range,V_Range,Meas_Range,File_Path,File_Time\n");
}
else
{
int Cried = slotList.FindIndex(x => x.Equals(SlotNum));
while (true)
{
Thread.Sleep(1000);
if (File.Exists(EXT_CAL_PATH + slotList[Cried - 1] + ".flag")) //Wait until previous thread flags completion
{
File.Delete(EXT_CAL_PATH + slotList[Cried - 1] + ".flag");
break;
}
}
File.Move(METADATA_PATH, EXT_CAL_PATH + "metadata_temp" + ".csv");
StreamReader sr = new StreamReader(EXT_CAL_PATH + "metadata_temp" + ".csv", Encoding.UTF8);
swdata = new StreamWriter(METADATA_PATH, true, Encoding.UTF8);
swdata.AutoFlush = true;
int line = 0;
while (!sr.EndOfStream)
{
string tmp = sr.ReadLine();
if (line == slotList[Cried])
{
swdata.WriteLine("Slot" + SlotNum + "," + arm_dna + "," + context.Communicator.ServerIP + "," + "V1.0.0");
}
else
{
swdata.WriteLine(tmp);
}
line++;
}
sr.Close();
File.Delete(EXT_CAL_PATH + "metadata_temp" + ".csv");
}
AutoFlush = true
};
Metadata_handler(
swdata: swdata,
SlotNum: SlotNum,
slotList: slotList,
arm_dna: arm_dna,
context: context,
init_Flag: true
);
string filetime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
for (int loopk = 0; loopk < 256; loopk++)
{
@@ -3174,5 +3040,76 @@ namespace Testrong.User.Program
}
}
#endregion
[TestrongTestCase]
public void Reset(IFlowRunnerContext context)
{
ExternalCalibrationReset(context);
}
[TestrongTestCase]
public void DmmGetRes(IFlowRunnerContext context)
{
DmmGetResValue(context, SelectTestVersion);
}
[TestrongTestCase]
public void Ext_Calibration_Pre(IFlowRunnerContext context)
{
ExternalCalibrationCollect(context, SelectTestVersion, true, true);
}
[TestrongTestCase]
public void Write_CalFiles(IFlowRunnerContext context)
{
ExternalCalibrationWriteCalFiles(context);
}
[TestrongTestCase]
public void Ext_Calibration_Post(IFlowRunnerContext context)
{
ExternalCalibrationCollect(context, SelectTestVersion, true, false);
}
[TestrongTestCase]
public void RintReset(IFlowRunnerContext context)
{
Rint_Reset(context);
}
[TestrongTestCase]
public void Rint_Pre(IFlowRunnerContext context)
{
Rint_FVMV_2mA_Pre(context, SelectTestVersion);
}
[TestrongTestCase]
public void RintDataUpload(IFlowRunnerContext context)
{
Rint_DataUpload(context);
}
[TestrongTestCase]
public void Rint_Post(IFlowRunnerContext context)
{
Rint_FVMV_2mA_Post(context, SelectTestVersion);
}
[TestrongTestCase]
public void PmurUpload(IFlowRunnerContext context)
{
Pmur_Upload(context);
}
[TestrongTestCase]
public void ReTest(IFlowRunnerContext context)
{
ExternalCalibrationCollect(context, SelectTestVersion, false, false);
}
[TestrongTestCase]
public void Freq_Test(IFlowRunnerContext context)
{
ExternalCalibrationFreqCollect(context, SelectTestVersion);
}
[TestrongTestCase]
public void Rint_FVMI_Gnd(IFlowRunnerContext context)
{
Rint_GND_FVMI_2mA(context);
}
}
}
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
6294ce1c6de551d5f3754fa8d57d8f6d1fe0c8f0
8336289dafd7be8d8ceb71ec0bfb414b5e10ce0020e044e9f7d2ae18b0c1e638
@@ -2413,3 +2413,46 @@ F:\syy\Prometheus\1KS_FT_EngineeringMachine\UserProgram_time\Testrong.User.Progr
F:\syy\Prometheus\1KS_FT_EngineeringMachine\UserProgram_time\Testrong.User.Program\obj\x64\Debug\Testrong.User.Program.csproj.CopyComplete
F:\syy\Prometheus\1KS_FT_EngineeringMachine\UserProgram_time\Testrong.User.Program\obj\x64\Debug\UserProgram.dll
F:\syy\Prometheus\1KS_FT_EngineeringMachine\UserProgram_time\Testrong.User.Program\obj\x64\Debug\UserProgram.pdb
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\UserProgram.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\UserProgram.pdb
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\NLog.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Transport.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Buffers.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Codecs.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\System.Threading.Tasks.Dataflow.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Common.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\System.Buffers.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Testrong.Core.Globalization.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\AutoMapper.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Testrong.Core.Datalog.Interfaces.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Testrong.Core.Hardware.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\MxFFTCalc.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\MWArray.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\MathNet.Numerics.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Testrong.Core.Gramar.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\System.Threading.Tasks.Extensions.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\System.Runtime.CompilerServices.Unsafe.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Extensions.Logging.Abstractions.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Extensions.Logging.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\STDF.Library.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\System.ValueTuple.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Antlr4.Runtime.Standard.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Extensions.Options.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Extensions.DependencyInjection.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Extensions.Primitives.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Microsoft.Bcl.AsyncInterfaces.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Testrong.Core.Model.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\Testrong.Core.Primitives.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Transport.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Buffers.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Codecs.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\System.Threading.Tasks.Dataflow.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\DotNetty.Common.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\AutoMapper.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\bin\x64\Debug\STDF.Library.xml
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\obj\x64\Debug\Testrong.User.Program.csproj.AssemblyReference.cache
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\obj\x64\Debug\Testrong.User.Program.csproj.CoreCompileInputs.cache
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\obj\x64\Debug\Testrong.A8AD3C05.Up2Date
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\obj\x64\Debug\UserProgram.dll
D:\WORK\ManLin\Verify\UserProgram_time\Testrong.User.Program\obj\x64\Debug\UserProgram.pdb
Binary file not shown.
Binary file not shown.