diff --git a/.vs/Testrong.User.Program/v17/.suo b/.vs/Testrong.User.Program/v17/.suo index 3ea42da..50ab213 100644 Binary files a/.vs/Testrong.User.Program/v17/.suo and b/.vs/Testrong.User.Program/v17/.suo differ diff --git a/.vs/Testrong.User.Program/v17/DocumentLayout.backup.json b/.vs/Testrong.User.Program/v17/DocumentLayout.backup.json index b87ccac..31d7bd3 100644 --- a/.vs/Testrong.User.Program/v17/DocumentLayout.backup.json +++ b/.vs/Testrong.User.Program/v17/DocumentLayout.backup.json @@ -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": "" diff --git a/.vs/Testrong.User.Program/v17/DocumentLayout.json b/.vs/Testrong.User.Program/v17/DocumentLayout.json index 16516d6..688a48d 100644 --- a/.vs/Testrong.User.Program/v17/DocumentLayout.json +++ b/.vs/Testrong.User.Program/v17/DocumentLayout.json @@ -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": "" diff --git a/Testrong.User.Program/UserProgram.cs b/Testrong.User.Program/UserProgram.cs index c269c96..56f290f 100644 --- a/Testrong.User.Program/UserProgram.cs +++ b/Testrong.User.Program/UserProgram.cs @@ -1,44 +1,29 @@ -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 { public enum TestVersion - { + { Board_1K_FT, Board_1K_CP, Board_2K_FT, @@ -108,7 +93,7 @@ namespace Testrong.User.Program { {"5uA", new TestParaSet{delayMs = 40, avgTimes = 64, samDelay = 100 } }, {"20uA", new TestParaSet{delayMs = 20, avgTimes = 64, samDelay = 100 } }, - {"200uA", new TestParaSet{delayMs = 15, avgTimes = 64, samDelay = 100 } }, + {"200uA", new TestParaSet{delayMs = 15, avgTimes = 64, samDelay = 100 } }, {"2mA", new TestParaSet{delayMs = 15, avgTimes = 64, samDelay = 100 } }, {"60mA", new TestParaSet{delayMs = 15, avgTimes = 64, samDelay = 100 } }, @@ -480,8 +465,8 @@ namespace Testrong.User.Program List TestInfo = new List(); int port = 200; string ksightConnStr = "GPIB1::22::INSTR"; - #endregion TestVersion SelectTestVersion = Select_Version[Readjson(CONFIG_JSON_PATH).Version]; + #endregion #region 函数定义 @@ -489,14 +474,30 @@ namespace Testrong.User.Program { Json get = new Json(); using (StreamReader sr = new StreamReader(json_path)) - { + { string json = sr.ReadToEnd(); get = JsonConvert.DeserializeObject(json); } - return get; + return get; } - public void metadata_handler(StreamWriter swdata,int SlotNum, List 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 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 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; @@ -627,22 +633,23 @@ namespace Testrong.User.Program public void ClearPrePostFile(string DirPath) { - System.IO.DirectoryInfo di= new DirectoryInfo(DirPath); + System.IO.DirectoryInfo di = new DirectoryInfo(DirPath); foreach (FileInfo file in di.GetFiles()) { - if(file.Name.EndsWith(".csv") && file.Name.IndexOf("FlowLog") == -1) + if (file.Name.EndsWith(".csv") && file.Name.IndexOf("FlowLog") == -1) { file.Delete(); } } } - public void EmptyDir(string DirPath ) + public void EmptyDir(string DirPath) { - System.IO.DirectoryInfo di = new DirectoryInfo( DirPath ); + System.IO.DirectoryInfo di = new DirectoryInfo(DirPath); foreach (FileInfo file in di.EnumerateFiles()) { file.Delete(); - }; + } + ; } private string[] GetAllPmuPins() { @@ -798,14 +805,14 @@ namespace Testrong.User.Program } public Dictionary ReadBackDmm(double[] data, List listCh) { - Dictionary DmmDic= new Dictionary(); + Dictionary DmmDic = new Dictionary(); int dmmFlag = 0; - while(dmmFlag < data.Length) + while (dmmFlag < data.Length) { int number = dmmFlag / 5; int group = listCh[number]; double[] DmmMeasure = new double[5]; - for(int readNum = dmmFlag; readNum < (number + 1) * 5; readNum++) + for (int readNum = dmmFlag; readNum < (number + 1) * 5; readNum++) { DmmMeasure[dmmFlag % 5] = data[readNum]; dmmFlag += 1; @@ -814,7 +821,7 @@ namespace Testrong.User.Program } return DmmDic; } - + //Write Data To File /* * Variable Definition @@ -830,20 +837,21 @@ 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"); sw.Write($"R_Int,{0}\n"); - if(type == "PMU") + if (type == "PMU") { sw.Write($"R_Ext,{extR[channel - 1, slot - 1]}\n"); } @@ -858,16 +866,16 @@ namespace Testrong.User.Program sw.Write("Force Value,ATE Measure,DMM Measure,Temperature\n"); for (int writeLine = 0; writeLine < 5; writeLine++) { - + if (mode == "FVMV" || mode == "FZMV") { sw.Write($"{ForceValue[writeLine]:F8},"); sw.Write($"{AteMeasure[writeLine]:F8},"); sw.Write($"{DmmMeasure[writeLine]:F8},"); } - else if(mode == "FVMI") + else if (mode == "FVMI") { - if(range == "60mA") + if (range == "60mA") { sw.Write($"{ForceValue[writeLine]:F10},"); sw.Write($"{AteMeasure[writeLine]:F15},"); @@ -880,9 +888,9 @@ namespace Testrong.User.Program sw.Write($"{(DmmMeasure[writeLine] / Convert.ToDouble(rload)):F15},"); } } - else if(mode == "FIMV") + else if (mode == "FIMV") { - if(range == "60mA") + if (range == "60mA") { sw.Write($"{ForceValue[writeLine]:F10},"); sw.Write($"{AteMeasure[writeLine]:F15},"); @@ -895,12 +903,12 @@ 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(); } - + #endregion #region TestCase @@ -1016,7 +1024,7 @@ namespace Testrong.User.Program string actimeing = $"{(1000000000 / FreqForce[i]):F2}"; Period[i] = Convert.ToDouble(actimeing); } - + //creat dir try { @@ -1094,7 +1102,7 @@ namespace Testrong.User.Program for (int loopk = 0; loopk < PmuChannelCount; loopk++) { int ch = ChannelPmu[loopk]; - + extCaliHandle.SetPpmuExternalCalibration(ExtConnStr, ExtPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, ExtCaliLoad.no_load, 1); //@@rita,20240307 Thread.Sleep(500); string[] PmuPinName = { ("A" + (loopk < 9 ? "0" : "") + (loopk + 1)) }; @@ -1145,7 +1153,7 @@ namespace Testrong.User.Program void Rint_Reset(IFlowRunnerContext context) - { + { var slotInfos = context.FlowCatalog.GetAll(); List slotList = new List(); for (int slotLen = 0; slotLen < slotInfos.Count; slotLen++) @@ -1163,7 +1171,7 @@ namespace Testrong.User.Program int SlotNum = context.Communicator.SlotNo; if (SlotNum == slotList[0]) { - if(Directory.Exists(RINT_PATH)) + if (Directory.Exists(RINT_PATH)) { EmptyDir(RINT_COMPFILE_PATH); EmptyDir(RINT_FILE_PATH); @@ -1171,7 +1179,7 @@ namespace Testrong.User.Program EmptyDir(RINT_POSTCHECK_PATH); EmptyDir(RINT_FAILLOG_PATH); } - if(Directory.Exists(DOWN_INITVALUE_PATH)) + if (Directory.Exists(DOWN_INITVALUE_PATH)) { EmptyDir(DOWN_INITVALUE_PATH); } @@ -1203,12 +1211,12 @@ namespace Testrong.User.Program Thread.Sleep(1); } else - { - if(File.Exists(EXT_CAL_INITVALUE_PATH + context.Communicator.ServerIP + "_" + context.Communicator.ServerPort + "_InitValue.csv")) - { + { + if (File.Exists(EXT_CAL_INITVALUE_PATH + context.Communicator.ServerIP + "_" + context.Communicator.ServerPort + "_InitValue.csv")) + { var isInitValueOK = extCaliHandle.UploadFile(context.Communicator.ServerIP, initValueFile, FileType.InitValue); LogRawText($"InitValue Status: {isInitValueOK}"); - } + } } if (File.Exists(BoardInfoFile)) { @@ -1267,7 +1275,7 @@ namespace Testrong.User.Program byte[] armDnaRaw = context.Communicator.Send(armDnaPortCmd); armDnaRaw = armDnaRaw.Reverse().ToArray(); string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString(); - int SlotNum = context.Communicator.SlotNo; + int SlotNum = context.Communicator.SlotNo; double[,] ExtBoard_Res = ReadRext(EXT_CAL_INIT_PATH + "ExtBoardRes.csv"); try { @@ -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 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]) { @@ -1426,7 +1415,7 @@ namespace Testrong.User.Program swdata.Flush(); swdata.Close(); } - + void Rint_DataUpload(IFlowRunnerContext context) { var slotInfos = context.FlowCatalog.GetAll(); @@ -1455,7 +1444,7 @@ namespace Testrong.User.Program while (true) { Thread.Sleep(1000); - if (File.Exists(RINT_COMPFILE_PATH + slotList[Cried - 1] + ".flag")) + if (File.Exists(RINT_COMPFILE_PATH + slotList[Cried - 1] + ".flag")) { File.Delete(RINT_COMPFILE_PATH + slotList[Cried - 1] + ".flag"); break; @@ -1478,7 +1467,7 @@ namespace Testrong.User.Program swSignal.Flush(); swSignal.Close(); } - } + } void Pmur_Upload(IFlowRunnerContext context) { var slotInfos = context.FlowCatalog.GetAll(); @@ -1507,7 +1496,7 @@ namespace Testrong.User.Program while (true) { Thread.Sleep(1000); - if (File.Exists(RINT_FILE_PATH + slotList[Cried - 1] + ".flag")) + if (File.Exists(RINT_FILE_PATH + slotList[Cried - 1] + ".flag")) { File.Delete(RINT_FILE_PATH + slotList[Cried - 1] + ".flag"); break; @@ -1519,7 +1508,7 @@ namespace Testrong.User.Program LogRawText($"Pmur Status: {isPmurUploadOK}"); if (SlotNum < slotList[slotList.Count - 1]) { - StreamWriter swSignal = new StreamWriter(RINT_FILE_PATH + SlotNum + ".flag"); + StreamWriter swSignal = new StreamWriter(RINT_FILE_PATH + SlotNum + ".flag"); swSignal.Flush(); swSignal.Close(); } @@ -1589,84 +1578,29 @@ 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); 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 M013_PMU = new Dictionary() - { - {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; double VoltageStep = 1; string[] PmuPinName = { ("A" + (ChannelPmu[loopk] < 10 ? "0" : "") + ChannelPmu[loopk]) }; int ch = ChannelPmu[loopk]; - + RELAY.SwitchMode(RelayMode.Open); RELAY.SwitchToPPMU(PmuPinName); string filepath = "Slot" + SlotNum + "_PMU_" + "ch" + ChannelPmu[loopk] + "_" + "FVMV" + "_" + "Hi-Z" + "_" + "2mA" + ".csv"; @@ -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(); @@ -1818,7 +1757,7 @@ namespace Testrong.User.Program string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString(); //convert hex dna to decimal int SlotNum = context.Communicator.SlotNo; //download file to local - if(SlotNum == slotList[0]) + if (SlotNum == slotList[0]) { DelayHelper.Sleep(1); } @@ -1828,13 +1767,13 @@ namespace Testrong.User.Program while (true) { Thread.Sleep(1000); - if (File.Exists(EXT_CAL_INIT_PATH + slotList[Cried - 1] + ".flag")) + if (File.Exists(EXT_CAL_INIT_PATH + slotList[Cried - 1] + ".flag")) { File.Delete(EXT_CAL_INIT_PATH + slotList[Cried - 1] + ".flag"); break; } } - } + } ExternalCalibrationHandle extCaliHandle = new ExternalCalibrationHandle(); var isDnaUploadOK = extCaliHandle.UploadFile(context.Communicator.ServerIP, EXT_CAL_INIT_PATH + "Dna_init.csv", FileType.dna); @@ -1877,14 +1816,14 @@ namespace Testrong.User.Program byte[] armDnaPortCmd = new byte[2] { 14, 57 }; // command to read arm dna byte[] armDnaRaw = context.Communicator.Send(armDnaPortCmd); //send command armDnaRaw = armDnaRaw.Reverse().ToArray(); - string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString(); + string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString(); int SlotNum = context.Communicator.SlotNo; ExtCaliLoad[] RLoad_Pmu_FV = { ExtCaliLoad.RC_RL13, ExtCaliLoad.RC_RL12, ExtCaliLoad.RC_RL10, ExtCaliLoad.RC_RL8, ExtCaliLoad.RC_RL5 }; ExtCaliLoad[] RLoad_Dps_FV = { ExtCaliLoad.RC_RL13, ExtCaliLoad.RC_RL12, ExtCaliLoad.RC_RL10, ExtCaliLoad.RC_RL8, ExtCaliLoad.RC_RL5, ExtCaliLoad.RC_RL3 }; int PmuResChannel = 1; int DpsResChannel = 1; - double[] RRange_Pmu_FV = { 10000000, 1000000, 100000, 100000, 1000 }; + double[] RRange_Pmu_FV = { 10000000, 1000000, 100000, 100000, 1000 }; double[] RRange_Dps_FV = { 1000000, 1000000, 100000, 10000, 1000, 10 }; //Creat Directory if (SlotNum == slotList[0]) @@ -1919,7 +1858,7 @@ namespace Testrong.User.Program string[] pmuPinName = { "A01" }; DPS.Force(dpsPinName, 0, DpsMode.FZMV, DpsIRange._2mA, VRange.Normal); PPMU.Force(pmuPinName, 0, PpmuMode.FZMV, PpmuIRange._2mA, VRange.Normal); - + for (int i = 0; i < RLoad_Pmu_FV.Length; i++) { extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, PmuResChannel, ExtCaliVI.V, RLoad_Pmu_FV[i], 0); @@ -1935,7 +1874,7 @@ namespace Testrong.User.Program ResWriter.Write($"Pmu_R{i + 1},{ResValue:F5}\n"); ResWriter.Flush(); } - + for (int j = 0; j < RLoad_Dps_FV.Length; j++) { extCaliHandle.SetDpsExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.DPS_FS, DpsResChannel, ExtCaliVI.V, RLoad_Dps_FV[j], 0); @@ -1961,7 +1900,7 @@ namespace Testrong.User.Program } if (SlotNum < slotList[slotList.Count - 1]) { - StreamWriter swSignal = new StreamWriter(EXT_CAL_INIT_PATH + SlotNum + ".flag"); + StreamWriter swSignal = new StreamWriter(EXT_CAL_INIT_PATH + SlotNum + ".flag"); swSignal.WriteLine(); swSignal.Flush(); swSignal.Close(); @@ -1997,12 +1936,12 @@ namespace Testrong.User.Program { TestVersion.Board_Ppmu_FT, allDpsPinNames_1K }, { TestVersion.KM_2, allDpsPinNames_2K} }; - - + + List ChannelDps = new List(); List ChannelPmu = new List(); Dictionary> slotTestInfo = new Dictionary>(); - Dictionary testParaSet_pmu_fvmv= new Dictionary(); + Dictionary testParaSet_pmu_fvmv = new Dictionary(); Dictionary testParaSet_pmu_fvmi = new Dictionary(); Dictionary testParaSet_pmu_fimv = new Dictionary(); Dictionary testParaSet_pmu_fzmv = new Dictionary(); @@ -2013,54 +1952,54 @@ namespace Testrong.User.Program switch (testVersion) { case TestVersion.Board_1K_FT: - { - testParaSet_pmu_fvmi = avgDelays_1kft_fvmi_pmu; - testParaSet_dps_fvmi = avgDelays_1kft_fvmi_dps; - testParaSet_pmu_fimv = avgDelays_1kft_fimv_pmu; - testParaSet_dps_fimv = avgDelays_1kft_fimv_dps; - } - break; + { + testParaSet_pmu_fvmi = avgDelays_1kft_fvmi_pmu; + testParaSet_dps_fvmi = avgDelays_1kft_fvmi_dps; + testParaSet_pmu_fimv = avgDelays_1kft_fimv_pmu; + testParaSet_dps_fimv = avgDelays_1kft_fimv_dps; + } + break; case TestVersion.Board_1K_CP: - { - testParaSet_pmu_fvmi = avgDelays_1kcp_fvmi_pmu; - testParaSet_dps_fvmi = avgDelays_1kcp_fvmi_dps; - testParaSet_pmu_fimv = avgDelays_1kcp_fimv_pmu; - testParaSet_dps_fimv = avgDelays_1kcp_fimv_dps; - } - break; + { + testParaSet_pmu_fvmi = avgDelays_1kcp_fvmi_pmu; + testParaSet_dps_fvmi = avgDelays_1kcp_fvmi_dps; + testParaSet_pmu_fimv = avgDelays_1kcp_fimv_pmu; + testParaSet_dps_fimv = avgDelays_1kcp_fimv_dps; + } + break; case TestVersion.Board_2K_FT: - { - testParaSet_pmu_fvmi = avgDelays_2kft_fvmi_pmu; - testParaSet_dps_fvmi = avgDelays_2kft_fvmi_dps; - testParaSet_pmu_fimv = avgDelays_2kft_fimv_pmu; - testParaSet_dps_fimv = avgDelays_2kft_fimv_dps; - } - break; + { + testParaSet_pmu_fvmi = avgDelays_2kft_fvmi_pmu; + testParaSet_dps_fvmi = avgDelays_2kft_fvmi_dps; + testParaSet_pmu_fimv = avgDelays_2kft_fimv_pmu; + testParaSet_dps_fimv = avgDelays_2kft_fimv_dps; + } + break; case TestVersion.Board_Ppmu_CP: - { - testParaSet_pmu_fvmi = avgDelays_ppmucp_fvmi_pmu; - testParaSet_dps_fvmi = avgDelays_ppmucp_fvmi_dps; - testParaSet_pmu_fimv = avgDelays_ppmucp_fimv_pmu; - testParaSet_dps_fimv = avgDelays_ppmucp_fimv_dps; - } - break; + { + testParaSet_pmu_fvmi = avgDelays_ppmucp_fvmi_pmu; + testParaSet_dps_fvmi = avgDelays_ppmucp_fvmi_dps; + testParaSet_pmu_fimv = avgDelays_ppmucp_fimv_pmu; + testParaSet_dps_fimv = avgDelays_ppmucp_fimv_dps; + } + break; case TestVersion.Board_Ppmu_FT: - { - testParaSet_pmu_fvmi = avgDelays_ppmuft_fvmi_pmu; - testParaSet_dps_fvmi = avgDelays_ppmuft_fvmi_dps; - testParaSet_pmu_fimv = avgDelays_ppmuft_fimv_pmu; - testParaSet_dps_fimv = avgDelays_ppmuft_fimv_dps; - } - break; + { + testParaSet_pmu_fvmi = avgDelays_ppmuft_fvmi_pmu; + testParaSet_dps_fvmi = avgDelays_ppmuft_fvmi_dps; + testParaSet_pmu_fimv = avgDelays_ppmuft_fimv_pmu; + testParaSet_dps_fimv = avgDelays_ppmuft_fimv_dps; + } + break; case TestVersion.KM_2: - { - testParaSet_pmu_fvmi = avgDelays_2km_fvmi_pmu; - testParaSet_dps_fvmi = avgDelays_2km_fvmi_dps; - testParaSet_pmu_fimv = avgDelays_2km_fimv_pmu; - testParaSet_dps_fimv = avgDelays_2km_fimv_dps; - } - break; - default:break; + { + testParaSet_pmu_fvmi = avgDelays_2km_fvmi_pmu; + testParaSet_dps_fvmi = avgDelays_2km_fvmi_dps; + testParaSet_pmu_fimv = avgDelays_2km_fimv_pmu; + testParaSet_dps_fimv = avgDelays_2km_fimv_dps; + } + break; + default: break; } testParaSet_pmu_fvmv = avgDelays_fvmv_pmu; testParaSet_pmu_fzmv = avgDelays_fzmv_pmu; @@ -2095,7 +2034,7 @@ namespace Testrong.User.Program if (isFirstTest == true) { ChannelDps = Select_Dps[testVersion]; - for(int m = 0; m < 256; m++) + for (int m = 0; m < 256; m++) { ChannelPmu.Add(m + 1); } @@ -2115,7 +2054,7 @@ namespace Testrong.User.Program slotTestInfo.Add(slot + 1, TestInfo); } } - else if(isDefault == false)//测试json文件中选择的挡位和模式 + else if (isDefault == false)//测试json文件中选择的挡位和模式 { if (Range_pmu_fvmv[0] != 0) { @@ -2152,7 +2091,7 @@ namespace Testrong.User.Program } } //-----read fail log to start second test----- - if(isFirstTest == false) + if (isFirstTest == false) { for (int slot = 0; slot < 12; slot++) { @@ -2203,13 +2142,13 @@ namespace Testrong.User.Program string DateCode = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); if (SlotNum == slotList[0]) { - if(isPreCheck == true) + if (isPreCheck == true) { EmptyDir(CAL_COMPFILE_PATH); ClearPrePostFile(CAL_PRECHECK_PATH); ClearPrePostFile(CAL_POSTCHECK_PATH); } - else if(isPreCheck == false) + else if (isPreCheck == false) { Thread.Sleep(1); } @@ -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, @@ -2251,8 +2192,8 @@ namespace Testrong.User.Program dmm.Init(ksightConnStr); List Info = slotTestInfo[SlotNum]; //{0:PMU_FVMV; 1:PMU_FVMI; 2:PMU_FIMV; 3:PMU_FZMV; 4:DPS_FVMV; 5:DPS_FVMI; 6:DPS_FIMV} - for (int loopi = 0; loopi < Info.Count/*Info.Count*/; loopi ++)//-----Loop Mode and Type----- - { + for (int loopi = 0; loopi < Info.Count/*Info.Count*/; loopi++)//-----Loop Mode and Type----- + { string Type = Info[loopi].chType; string Mode = Info[loopi].Mode; List ListRanges = Info[loopi].Range; @@ -2270,6 +2211,9 @@ namespace Testrong.User.Program Dictionary AteMeasureDir = new Dictionary(); Dictionary ForceValueDir = new Dictionary(); Dictionary DmmMeasureDir = new Dictionary(); + Dictionary TempValueDir = new Dictionary(); + + List testCh = new List(); ExtCaliLoad Rcut = (Mode == "FVMV") ? ExtCaliLoad.no_load : Rcut_MIFI[Range]; string Rload = (Mode == "FVMV" || Mode == "FZMV") ? "Hi-Z" : strRloadFvmi[Range]; @@ -2284,23 +2228,23 @@ namespace Testrong.User.Program { rl = (Mode == "FVMI") ? RlPmuFv[Range] : RlPmuFi[Range]; } - else if(Type == "DPS") - { + else if (Type == "DPS") + { rl = (Mode == "FVMI") ? RlDpsFv[Range] : RlDpsFi[Range]; } } - switch(Mode) + switch (Mode) { case "FVMV": { - dmm.Setup(NiVisaComms.Dmm3458AMeasureMode.VOLT, 7.5, 0.04); + dmm.Setup(NiVisaComms.Dmm3458AMeasureMode.VOLT, 7.5, 0.04); } break; case "FVMI": { - if(Type == "PMU") + if (Type == "PMU") { - if(Range == "60mA") + if (Range == "60mA") { dmm.Setup(NiVisaComms.Dmm3458AMeasureMode.CURR, DmmCurrRanges[Range], 0.04); } @@ -2318,7 +2262,7 @@ namespace Testrong.User.Program else { dmm.Setup(NiVisaComms.Dmm3458AMeasureMode.VOLT, 7.5, 0.04); - } + } } } break; @@ -2377,17 +2321,22 @@ namespace Testrong.User.Program } } break; - default:break; + default: break; } 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") { int ch = ListChannels[loopk]; - + string[] PmuPinName = { ("A" + (ListChannels[loopk] < 10 ? "0" : "") + ListChannels[loopk]) }; PmuPinName_FZ[0] = ("A" + (ListChannels[loopk] < 10 ? "0" : "") + ListChannels[loopk]); if ((ListChannels[loopk] % 8 >= 1) && (ListChannels[loopk] % 8 <= 4)) @@ -2423,9 +2372,7 @@ 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 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; @@ -2451,7 +2401,7 @@ namespace Testrong.User.Program break; case "FVMI": { - if (RangesPmu[Range] == PpmuIRange._60mA) + if (RangesPmu[Range] == PpmuIRange._60mA) { extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.I, Rcut, 0); Thread.Sleep(15); @@ -2462,6 +2412,9 @@ namespace Testrong.User.Program dmm.TriggerSingleMeasure(); List 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; @@ -2471,7 +2424,7 @@ namespace Testrong.User.Program { extCaliHandle.SetPpmuExternalCalibration(extConnStr, extPort, SlotNum, ExternalCalibrationMode.Channel, ch, ExtCaliVI.V, Rcut, 0); Thread.Sleep(5); - if(loopk == 0) + if (loopk == 0) { Thread.Sleep(5); } @@ -2482,6 +2435,9 @@ namespace Testrong.User.Program dmm.TriggerSingleMeasure(); List 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 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; @@ -2555,13 +2517,14 @@ namespace Testrong.User.Program Thread.Sleep(5); } break; - default: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") + else if (Type == "DPS") { string[] DpsPinName = { ("DPS" + ListChannels[loopk]) }; string[] allDpsPinNames = Select_DpsPin[testVersion]; @@ -2578,7 +2541,7 @@ namespace Testrong.User.Program int ch = ListChannels[loopk]; DpsRangeRelay.SetDpsRangeRelayBySignals(allDpsPinNames, DpsRelayState.OPEN, context); - switch (RangesDps[Range]) + switch (RangesDps[Range]) { case DpsIRange._60mA: { @@ -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 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 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 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; @@ -2713,7 +2683,7 @@ namespace Testrong.User.Program dmm.TriggerSingleMeasure(); if (Range == "5uA" || Range == "20uA" || Range == "200uA") { - if(p == 0) + if (p == 0) { Thread.Sleep(50); } @@ -2732,6 +2702,9 @@ namespace Testrong.User.Program } List 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]); } @@ -2739,11 +2712,12 @@ namespace Testrong.User.Program Thread.Sleep(10); } break; - default: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,23 +2748,24 @@ 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, arm_dna: arm_dna, context: context, init_Flag: false, - Type:Type, - Channel:ch, - Mode:Mode, - Rload:rl, - Range:Range, - filepath:filepath, - filetime:filetime + Type: Type, + Channel: ch, + Mode: Mode, + Rload: rl, + Range: Range, + filepath: filepath, + filetime: filetime ); } } @@ -2806,21 +2781,22 @@ namespace Testrong.User.Program { 0.0 , 0.0 , 0.0} }; WriteSingleFile( - filename:filename, - slot: SlotNum, - dna :arm_dna, + filename: filename, + slot: SlotNum, + dna: arm_dna, type: Info[loopi].chType, - channel:ch, - mode:Mode, - rload:rl, + channel: ch, + mode: Mode, + rload: rl, extR: ZeroExtR, - range:Range, - ForceValue:ForceValueDir[ch], - AteMeasure:AteMeasureDir[ch], - DmmMeasure:DmmMeasureDir[ch] + range: Range, + ForceValue: ForceValueDir[ch], + AteMeasure: AteMeasureDir[ch], + DmmMeasure: DmmMeasureDir[ch], + TempValue: TempValueDir[ch] ); - metadata_handler( + Metadata_handler( swdata: swdata, SlotNum: SlotNum, slotList: slotList, @@ -2838,7 +2814,7 @@ namespace Testrong.User.Program } } } - + } if (SlotNum < slotList[slotList.Count - 1]) { @@ -2871,7 +2847,7 @@ namespace Testrong.User.Program string arm_dna = BitConverter.ToUInt64(armDnaRaw, 0).ToString(); //convert hex dna to decimal int SlotNum = context.Communicator.SlotNo; ExternalCalibrationHandle extCaliHandle = new ExternalCalibrationHandle(); - if(SlotNum == slotList[0]) + if (SlotNum == slotList[0]) { DelayHelper.Sleep(1); } @@ -2888,7 +2864,7 @@ namespace Testrong.User.Program } } } - + //Write files Thread.Sleep(10); var isDnaUploadOK = extCaliHandle.UploadFile(context.Communicator.ServerIP, CAL_COMPFILE_PATH + "DNA_" + context.Communicator.ServerIP + ".csv", FileType.dna); @@ -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 ChannelPmu = new List(); 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); + } } } diff --git a/Testrong.User.Program/bin/x64/Debug/UserProgram.dll b/Testrong.User.Program/bin/x64/Debug/UserProgram.dll index 14cb303..761ce29 100644 Binary files a/Testrong.User.Program/bin/x64/Debug/UserProgram.dll and b/Testrong.User.Program/bin/x64/Debug/UserProgram.dll differ diff --git a/Testrong.User.Program/bin/x64/Debug/UserProgram.pdb b/Testrong.User.Program/bin/x64/Debug/UserProgram.pdb index b30f0a4..9fd1cf5 100644 Binary files a/Testrong.User.Program/bin/x64/Debug/UserProgram.pdb and b/Testrong.User.Program/bin/x64/Debug/UserProgram.pdb differ diff --git a/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.AssemblyReference.cache b/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.AssemblyReference.cache index a5806c4..1d22435 100644 Binary files a/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.AssemblyReference.cache and b/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.AssemblyReference.cache differ diff --git a/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.CoreCompileInputs.cache b/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.CoreCompileInputs.cache index f236af0..e461646 100644 --- a/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.CoreCompileInputs.cache +++ b/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -6294ce1c6de551d5f3754fa8d57d8f6d1fe0c8f0 +8336289dafd7be8d8ceb71ec0bfb414b5e10ce0020e044e9f7d2ae18b0c1e638 diff --git a/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.FileListAbsolute.txt b/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.FileListAbsolute.txt index f3d28b2..6c9cc88 100644 --- a/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.FileListAbsolute.txt +++ b/Testrong.User.Program/obj/x64/Debug/Testrong.User.Program.csproj.FileListAbsolute.txt @@ -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 diff --git a/Testrong.User.Program/obj/x64/Debug/UserProgram.dll b/Testrong.User.Program/obj/x64/Debug/UserProgram.dll index 14cb303..761ce29 100644 Binary files a/Testrong.User.Program/obj/x64/Debug/UserProgram.dll and b/Testrong.User.Program/obj/x64/Debug/UserProgram.dll differ diff --git a/Testrong.User.Program/obj/x64/Debug/UserProgram.pdb b/Testrong.User.Program/obj/x64/Debug/UserProgram.pdb index b30f0a4..9fd1cf5 100644 Binary files a/Testrong.User.Program/obj/x64/Debug/UserProgram.pdb and b/Testrong.User.Program/obj/x64/Debug/UserProgram.pdb differ