/// <summary> /// 在非UI线程上执行检测 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TestBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bgWorker = sender as BackgroundWorker; using (PcbTesterClient client = PcbTesterClient.Create(Settings.Default.PortName, Settings.Default.BaudRate)) { client.Open(); progressValue = 0; List <CommandResult> commandResultsList = new List <CommandResult>(); for (int i = 0; i < this.landing1.SelectedTestItems.Count; i++) { TestItemInfo testItem = this.landing1.SelectedTestItems[i]; bgWorker.ReportProgress(i); progressValue = i; var testResult = CommandEngine.Instance.Excute(client, testItem); commandResultsList.Add(testResult); bgWorker.ReportProgress(i, testResult); //在操作的过程中需要检查用户是否取消了当前的操作。 if (bgWorker.CancellationPending == true) { e.Cancel = true; break; } } e.Result = commandResultsList; } }
public static CommandResult PulseRelayControl(PcbTesterClient client, RelayControlAction action) { var relayControlCommand = new RelayControlCommand(); var parameter = new RelayControlCommandParameter(action, "20"); return(relayControlCommand.Execute(client, parameter, null)); }
/// <summary> /// 执行断路器检测命令 /// </summary> /// <param name="client">PcbTesterClient句柄</param> /// <param name="parameter">命令参数</param> /// <param name="context">不同命令之间的通信参数</param> /// <returns>检测结果</returns> public CommandResult Execute(PcbTesterClient client, CommandParameter parameter, CommandContext context) { WriteResult writeResult = client.Write("0-0:199.128.11", string.Empty); if (!writeResult.Success) { string message = string.Format("{0};0x{1:X};{2}", Resources.BreakerTest, string.Empty, writeResult.Error.ToString()); logger.ErrorFormat("{0}", message); throw new CommunicationException(message); } ReadResult testResult = client.Read("0-0:199.128.11", string.Empty); //检测结果为错误码 if (!testResult.Success) { logger.ErrorFormat("{0}", testResult.Data); throw new CommunicationException(testResult.Data); } //检测板支持三路断路器检测,三路检测结果用逗号隔开,取值为“OK”/“ERROR”。e.g. OK,ERROR,ERROR string[] breakerState = testResult.Data.Split(','); for (int i = 0; i < breakerState.Length; i++) { if (breakerState[i] == "ERROR") { return(new CommandResult(false, testResult.Data)); } } return(new CommandResult(true, testResult.Data)); }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var eraseCommand = new EraseSPIFlashCommand(); var eraseParameter = new AddressCommandParameter(0x0u); CommandResult eraseResult = eraseCommand.Execute(client, eraseParameter, null); var readcommand0 = new ReadSPIFlashCommand(); var readParameter0 = new AddressCommandParameter(0x0u, 4); CommandResult readResult0 = readcommand0.Execute(client, readParameter0, null); client.Write("0-0:199.128.8", new byte[] { 0x10 }, 0x0u); #if false var readcommand0 = new ReadSPIFlashCommand(); var readParameter0 = new AddressCommandParameter(0x00020000u, 4); CommandResult readResult0 = readcommand0.Execute(client, readParameter0, null); var eraseCommand = new EraseSPIFlashCommand(); var eraseParameter = new AddressCommandParameter(0x00020000u); CommandResult eraseResult = eraseCommand.Execute(client, eraseParameter, null); var readcommand = new ReadSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00u, 2, "FFFF"); //var parameter = new AddressCommandParameter(0x00020000u, 4, "FFFFFFFF"); var readParameter = new AddressCommandParameter(0x00020000u, 4); CommandResult readResult = readcommand.Execute(client, readParameter, null); var command = new WriteSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00020000u, "00000000"); //string writeData = "000000000000000000000000000000000000000000000000000001A650000000505000000050500000005050000000505000000050500000005050000000505000000050500000005050000000505000000050500000005050000000505000000050500000005050000000505000000050000000000000000000000000000000"; string writeData = "FF"; var writeParameter = new AddressCommandParameter(0x00020000u, writeData); CommandResult result = command.Execute(client, writeParameter, null); //writeParameter = new AddressCommandParameter(0x01, writeData); //result = command.Execute(client, writeParameter, null); var readcommand1 = new ReadSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00u, 2, "FFFF"); //var parameter = new AddressCommandParameter(0x00020000u, 4, "FFFFFFFF"); var readParameter1 = new AddressCommandParameter(0x00020000u, 1); CommandResult readResult1 = readcommand.Execute(client, readParameter1, null); #endif // Assert.AreEqual(result.Success, true); //Assert.AreEqual(result.Message, ""); } }
public void WriteSuccessTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); WriteResult writeResult = client.Write("0-0:199.128.1", string.Empty); Assert.AreEqual(true, writeResult.Success); } }
public void CalibrateACPhaseTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); WriteResult writeResult = CalibrationHelper.CalibratePhase(client, 65); Assert.AreEqual(writeResult.Success, true); } }
public void WriteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); byte[] writeResult = client.Write("68AAAAAAAAAAAA6801043413173A6916", true); Assert.Fail(); } }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new ReadErrorMsgCommand(); CommandResult result = command.Execute(client, null, null); Assert.AreEqual(result.Success, true); Assert.AreEqual(result.Data, "No Error"); } }
public void ExecuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var secondsCommand = new SecondSignalCalibrationCommand(); CommandResult result = secondsCommand.Execute(client, null, null); Assert.AreEqual(result.Data, "50000000,5"); } }
/// <summary> /// 执行强制编程命令 /// </summary> /// <param name="client">PcbTesterClient句柄</param> /// <param name="parameter">命令参数</param> /// <param name="context">不同命令之间的通信参数</param> /// <returns>检测结果</returns> public CommandResult Execute(PcbTesterClient client, CommandParameter parameter, CommandContext context) { var forceProgramParameter = parameter as ForceProgramCommandParameter; WriteResult writeResult = client.Write(Obis, FormatWriteParameter(forceProgramParameter)); if (!writeResult.Success) { string message = string.Format( Resources.ForceProgramCommand_WriteFailedMessageFormat, this.Name, writeResult.Error.ToString(), forceProgramParameter.ToString()); logger.Error(message); throw new CommunicationException(message); } //读取强编状态 ReadResult readResult = client.Read(Obis, string.Empty); while (StringResultToEnum(readResult.Data) == ForceProgramState.ForceProgramProcessing) { System.Threading.Thread.Sleep(1000); readResult = client.Read(Obis, string.Empty); if (!readResult.Success) { break; } if (readResult.Data == ForceProgramState.Succeed.ToString()) { break; } } //强编失败 if (!readResult.Success) { return(new CommandResult( false, readResult.Error.ToString(), string.Format( Resources.ForceProgramCommand_ForceProgramErrorMessageFormat, this.Name, forceProgramParameter.ToString(), ForceProgramState.Succeed.ToString(), readResult.Error.ToString()))); } return(new CommandResult(true)); }
/// <summary> /// 执行读错误详细信息命令 /// </summary> /// <param name="client">PcbTesterClient句柄</param> /// <param name="parameter">命令参数</param> /// <param name="context">不同命令之间的通信参数</param> /// <returns>检测结果</returns> public CommandResult Execute(PcbTesterClient client, CommandParameter parameter, CommandContext context) { var testResult = client.Read("0-0:199.128.12", string.Empty); //检测结果为错误码 //if (!testResult.Contains(":") && testResult.Length == 6) //{ // logger.ErrorFormat("{0}", testResult); //// throw new CommunicationException(testResult); //} return(new CommandResult(true, testResult.Data)); }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new BreakerTestCommand(); CommandResult result = command.Execute(client, null, null); Assert.AreEqual(result.Success, false); Assert.AreEqual(result.Data, "ERROR,ERROR,ERROR"); } }
public void WriteWrongTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); //启动交流测量命令,obis参数相线设置错误 WriteResult writeResult = client.Write("0-0:199.128.5", "D"); Assert.AreEqual(false, writeResult.Success); Assert.AreEqual(615, writeResult.Error.ErrorCode); Assert.AreEqual("(ERR615) " + Resources.ERR615, writeResult.Error.ToString()); } }
public static CommandResult ControlRelay(PcbTesterClient client, RelayControlCommandParameter relayParameter) { client.Open(); var relayControlCommand = new RelayControlCommand(); try { CommandResult result = relayControlCommand.Execute(client, relayParameter, null); } catch (CommunicationException ex) { throw new CommunicationException(ex.Message); } return(new CommandResult(true)); }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new WriteI2CCommand(); var parameter = new AddressCommandParameter(0xA4, 0x20, "126A9B63142533"); CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(result.Success, false); Assert.AreEqual(result.Message, string.Format("{0}:({1}) {2}", "Write I2C Command", "ERR610", Resources.ERR610)); } }
public void CalibrateACCurrentTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); WriteResult writeResult = CalibrationHelper.CalibrateCurrent(client, 14.58m); //Assert.AreEqual(writeResult.Success, true); Assert.AreEqual(writeResult.Success, false); Assert.AreEqual(writeResult.Error.ErrorCode, 615); Assert.AreEqual(writeResult.Error.Message, "Calibrate AC Current Measurement"); Assert.AreEqual(writeResult.Error.ToString(), string.Format("(ERR615) {0}", Resources.ERR615)); } }
public void ExecuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new EraseSPIFlashCommand(); //var parameter = new AddressCommandParameter(0x00); var parameter = new AddressCommandParameter(0x00); CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(result.Success, true); } }
/// <summary> /// 断电复位 关闭所有继电器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void resetToolStripMenuItem_Click(object sender, EventArgs e) { using (PcbTesterClient client = PcbTesterClient.Create(Settings.Default.PortName, Settings.Default.BaudRate)) { try { client.Open(); RelayControlHelper.Reset(client); } catch (Exception ex) { MessageBoxHelper.ShowError(ex.Message); return; } } }
/// <summary> /// 上模拟电压电流,导通5V 模拟电压 模拟电流继电器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onAnalogVolCurrentToolStripMenuItem_Click(object sender, EventArgs e) { using (PcbTesterClient client = PcbTesterClient.Create(Settings.Default.PortName, Settings.Default.BaudRate)) { try { client.Open(); RelayControlHelper.ControlRelay(client, new RelayControlCommandParameter(RelayControlAction.OPEN, "0,1,2,3,4,5,6")); } catch (Exception ex) { MessageBoxHelper.ShowError(ex.Message); return; } } }
public void CloseAllRelayControlTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var relayControlCommand = new RelayControlCommand(); var parameter = new RelayControlCommandParameter(); var context = new CommandContext(); parameter.Action = RelayControlAction.CLOSE; parameter.SelectedNumber = "all"; CommandResult result = relayControlCommand.Execute(client, parameter, context); Assert.AreEqual(result.Success, true); } }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new ReadI2CCommand(); var parameter = new AddressCommandParameter(0xA4, 0x20, 0x10); CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(result.Success, true); Assert.AreEqual(result.Data, "126A9B63142533126A9B6314253333"); } }
public void ExecuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new ReadSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00u, 2, "FFFF"); //var parameter = new AddressCommandParameter(0x00020000u, 4, "FFFFFFFF"); var parameter = new AddressCommandParameter(0x40, 0x40); CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(result.Success, true); //Assert.AreEqual(result.Data, "126A9B63142533FFFFFFFFFFFFFFFFFF"); } }
public void RS232Test() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new MeterCommunicationCommand(); var parameter = new MeterCommunicationCommandParameter(); parameter.ComPort = CommunicationPort.RS232; parameter.BaudRate = MeterBaudRate; parameter.DataBits = MeterDataBits; parameter.Parity = MeterParity; CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(result.Success, true); } }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new MeasureDCVoltageCommand(); var parameter = new MeasureParameter(1, 2.5m, 2.6m); //单位V CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(false, result.Success); //Assert.AreEqual("3050mV", result.Data); MessageBoxHelper.ShowError(result.Message); } }
/// <summary> /// 补偿秒信号 /// </summary> /// <param name="client">PcbTesterClient句柄</param> /// <param name="parameter">秒信号参数</param> /// <param name="clockValue"></param> private void CompensateClockSignal(PcbTesterClient client, SecondSignalCalibrationParameter parameter, decimal clockValue) { //1.开透明通道 MeterCommunicationCommand communicationCommand = new MeterCommunicationCommand(); var openResult = MeterCommunicationHelper.OpenTransparentChannel( client, new MeterCommunicationCommandParameter( parameter.ComPort, parameter.BaudRate, parameter.DataBits, parameter.Parity)); //2.发送读部标信息帧 byte[] resultBuffer = client.Write(MinistryStandardFrames.ReadMeterMessage, true); //3.处理表回的信息帧 int b = resultBuffer[14] - 0x33; if ((b & 0x40) != 0) { b = b | 0x80; } int complementCode = (int)ComplementCodeHelper.CalcComplementCode(clockValue); int sendComplementCode = (b + complementCode) & 0x7F; //秒信号无法修补 if (!((0x00 <= sendComplementCode && sendComplementCode <= 0x0A) || (0x70 <= sendComplementCode && sendComplementCode <= 0x7F))) { MeterCommunicationHelper.ExitTransparentChannel(client); //退出透明通道 return; } //4.若能补偿,则发送补偿秒信号的帧 string clockChipFrame = GetWriteClockChipFrame((byte)sendComplementCode); //写时钟芯片信号帧 client.Write(clockChipFrame, true); string compensateClockSignalFrame = GetCompensateClockSignalFrame((byte)sendComplementCode); client.Write(clockChipFrame, true); MeterCommunicationHelper.ExitTransparentChannel(client); //退出透明通道 }
/// <summary> /// 执行Commandl类Excute函数 /// </summary> /// <param name="client">PcbTesterClient句柄</param> /// <param name="testItem">选中的检测项</param> /// <returns>检测结果</returns> public CommandResult Excute(PcbTesterClient client, TestItemInfo testItem) { var command = ProfileManager.Instance.GetCommand(testItem.Name); var commandResult = new CommandResult(); try { commandResult = command.Execute(client, testItem.Parameter, null); logger.InfoFormat("Run test:{0}...", testItem.Name); } catch (Exception ex) { logger.ErrorFormat("Run test:{0}; Exception message:{1}.", testItem.Name, ex.Message); throw new Exception(ex.Message); } return(commandResult); }
/// <summary> /// 激活表的秒信号 /// </summary> /// <returns></returns> private void ActivateSecond(PcbTesterClient client, SecondSignalCalibrationParameter parameter) { //1.开透明通道 MeterCommunicationCommand communicationCommand = new MeterCommunicationCommand(); var communicationParamter = new MeterCommunicationCommandParameter( parameter.ComPort, parameter.BaudRate, parameter.DataBits, parameter.Parity); MeterCommunicationHelper.OpenTransparentChannel(client, communicationParamter); //2.发送激活秒信号帧 client.Write(MinistryStandardFrames.ActivateSecond, true); //激活秒信号帧 //3.发完退出透明通道 MeterCommunicationHelper.ExitTransparentChannel(client); //退出透明通道 }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new MeasureACCurrentCommand(); var parameter = new MeasureParameter(Phase.A) { LowerLimit = 20m, //单位mA UpperLimit = 40m }; CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual("14.35mA", result.Data); Assert.AreEqual(false, result.Success); } }
public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var command = new MeasureActivePowerCommand(); var parameter = new MeasureParameter(Phase.A) { LowerLimit = -2.2m, UpperLimit = 2.2m }; CommandResult result = command.Execute(client, parameter, null); Assert.AreEqual(true, result.Success); Assert.AreEqual("1.498W", result.Data); } }
/// <summary> /// 执行被测表通信命令 /// </summary> /// <param name="client">PcbTesterClient句柄</param> /// <param name="parameter">命令参数</param> /// <param name="context">不同命令之间的通信参数</param> /// <returns>检测结果</returns> public CommandResult Execute(PcbTesterClient client, CommandParameter parameter, CommandContext context) { var communicationParameter = parameter as MeterCommunicationCommandParameter; //打开透明通道 WriteResult writeResult = client.Write(Obis, FormatWriteParameter(communicationParameter)); var result = new CommandResult(writeResult.Success); if (!result.Success) //应答错误 { string message = string.Format( Resources.MeterCommunicationCommand_WriteFailedMessageFormat, this.Name, writeResult.Error.ToString(), communicationParameter.ToString()); logger.Error(message); throw new CommunicationException(message); } byte[] recvData = client.Write(communicationParameter.SendData, communicationParameter.IsHex); string actualRecvData = Microstar.Utility.Hex.ToString(recvData, " "); string expectedRecvData = communicationParameter.ExpectedReceiveData.Trim(); if (actualRecvData == expectedRecvData) { return(new CommandResult(true, actualRecvData)); } else { return(new CommandResult( false, actualRecvData, string.Format( Resources.MeterCommunicationCommand_CommErrorMessageFormat, this.Name, communicationParameter.ToString(), expectedRecvData, actualRecvData))); } }