public void WaitProgramEnd(ProgramBuffer index, int timeout) { if (IsProgramRunning(index)) { Api.WaitProgramEnd(index, timeout); } }
private void StopBufferIfRunning(ProgramBuffer index) { if (IsProgramRunning(index)) { Api.StopBuffer(index); Thread.Sleep(100); } }
public bool IsProgramRunning(ProgramBuffer index) { try { return((uint)(Api.GetProgramState(index) & ProgramStates.ACSC_PST_RUN) > 0U); } catch (Exception ex) { logger.Error(string.Format("BufferHelper.IsProgramRunning: Exception {0}: {1}", index, ex.Message)); return(false); } }
private bool IsBufferEmpty(ProgramBuffer bufferIndex) { string buffer; try { buffer = Api.UploadBuffer(bufferIndex); } catch (Exception e) { throw new AcsException("Failed to upload buffer. Exception: " + e.Message); } return(buffer == null); }
private void DeclareVariableInDBuffer() { string Warning = "! Warning, generated by Host for digital input and output, do NOT change." + NewLine; string inputDefine = string.Empty; for (int i = 0; i < InputModuleNum; i++) { inputDefine += GlobalDefine + GetInputName(i) + NewLine; } string outputDefine = string.Empty; for (int i = 0; i < OutputModuleNum; i++) { outputDefine += GlobalDefine + GetOutputName(i) + NewLine; } string program = Warning + inputDefine + outputDefine; ProgramBuffer DBuffer = (ProgramBuffer)(Convert.ToInt16(Ch.GetDBufferIndex())); string originProgram = Ch.UploadBuffer(DBuffer); if (originProgram != null) { if (originProgram.Contains(InputVariableName + BaseAddressOffset) == false) { Ch.AppendBuffer(DBuffer, program); for (int i = 0; i < 9; i++) { Ch.ClearBuffer((ProgramBuffer)i, 1, 2000); } Ch.CompileBuffer(DBuffer); } } else { Ch.AppendBuffer(DBuffer, program); for (int i = 0; i < 9; i++) { Ch.ClearBuffer((ProgramBuffer)i, 1, 2000); } Ch.CompileBuffer(DBuffer); } MapEtherCAT(); }
public void StopBuffer(ProgramBuffer index) { if (!Api.IsConnected) { logger.Info("BufferHelper.StopBuffer: Controller not connected"); return; } try { Api.StopBuffer(index); } catch (Exception ex) { logger.Error(string.Format("AcsUtil.ReadVar: Failed to stop buffer {0}: {1}", index, ex.Message)); } }
public void WriteVariable(object value, string variable, ProgramBuffer buffer = ProgramBuffer.ACSC_NONE) { try { if (Connected()) { ch.WriteVariable(value, variable, buffer); } } catch (Exception ex) { LogScreen.PushMessage(ex.StackTrace, MessageType.Error); Console.WriteLine(ex.StackTrace); } }
public void RunBuffer(ProgramBuffer buffer) { if (Connected()) { try { ch.RunBuffer(buffer, null); } catch (Exception ex) { LogScreen.PushMessage(ex.StackTrace, MessageType.Error); Console.WriteLine(ex.StackTrace); } } }
private void WriteBuffer(ProgramBuffer index, string buffer) { if (!CompareBuffer(index, buffer)) { return; } StopBufferIfRunning(index); try { Api.LoadBuffer(index, buffer); Api.CompileBuffer(index); changesMadeToBuffer = true; } catch (Exception e) { throw new AcsException($"Failed to load and compile buffer {index}. Exception: " + e.Message); } }
public object ReadVariableAsMatrix(string varName, ProgramBuffer bufferIndex = ProgramBuffer.ACSC_NONE, int from1 = -1, int to1 = -1, int from2 = -1, int to2 = -1) { if (!api.IsConnected) { logger.Info("AcsUtil.ReadVariableAsMatrix: Controller not connected"); return(null); } try { return(api.ReadVariableAsMatrix(varName, bufferIndex, from1, to1, from2, to2)); } catch (Exception ex) { logger.Error($"AcsUtil.ReadVariableAsMatrix: Exception while accessing '{varName}': " + ex.Message); return(null); } }
public object ReadVar(string varName, ProgramBuffer bufferIndex = ProgramBuffer.ACSC_NONE, int indFrom = -1, int indFromTo = -1) { if (!api.IsConnected) { logger.Info("AcsUtil.ReadVar: Controller not connected"); return(null); } try { return(api.ReadVariable(varName, bufferIndex, indFrom, indFromTo)); } catch (Exception ex) { logger.Error($"AcsUtil.ReadVar: Exception while accessing '{varName}', index from '{indFrom}' to '{indFromTo}': " + ex.Message); return(null); } }
public void RunBuffer(ProgramBuffer index, string label = null) { if (!Api.IsConnected) { logger.Info("BufferHelper.RunBuffer: Controller not connected"); return; } try { StopBufferIfRunning(index); Api.RunBuffer(index, label); } catch (Exception ex) { logger.Error( string.Format("BufferHelper.RunBuffer: Failed to run buffer {0}:{1} {2}", index, label == null ? "the top" : (object)label, ex.Message)); } }
public object ReadVariable(string variable, ProgramBuffer buffer = ProgramBuffer.ACSC_NONE) { object data = (int)0; try { if (Connected()) { data = ch.ReadVariable(variable, buffer); } } catch (Exception ex) { LogScreen.PushMessage(ex.StackTrace, MessageType.Error); Console.WriteLine(ex.StackTrace); } return(data); }
private void DeclareVariableInDBuffer() { string Warning = "! Warning, generated by Host for Motor Abs Position, do not change." + _newLine; string EcatActPosDefine = string.Empty; foreach (var motor in Motors) { EcatActPosDefine += GlobalDefine + GetEcatActPosName(motor) + _newLine; } string program = Warning + EcatActPosDefine; ProgramBuffer DBuffer = (ProgramBuffer)(Convert.ToInt16(_ch.GetDBufferIndex())); string originProgram = _ch.UploadBuffer(DBuffer); if (originProgram != null) { if (originProgram.Contains(EcatActPosName) == false) { _ch.AppendBuffer(DBuffer, program); for (int i = 0; i < 9; i++) { _ch.ClearBuffer((ProgramBuffer)i, 1, 2000); } _ch.CompileBuffer(DBuffer); } } else { _ch.AppendBuffer(DBuffer, program); for (int i = 0; i < 9; i++) { _ch.ClearBuffer((ProgramBuffer)i, 1, 2000); } _ch.CompileBuffer(DBuffer); } MapEtherCat(); }
/// <summary> /// compare buffer to be written with existing buffer on the ACS controller (if any) /// </summary> /// <param name="bufferIndex">index of the buffer</param> /// <param name="toWrite">buffer to be written</param> /// <returns>true when there's different between the buffer, or the buffer on the controller is empty</returns> /// <exception cref="AcsException">triggered when buffer uploading failed</exception> private bool CompareBuffer(ProgramBuffer bufferIndex, string toWrite) { string toCompare; try { toCompare = Api.UploadBuffer(bufferIndex); } catch (Exception e) { throw new AcsException("Failed to upload buffer. Exception: " + e.Message); } if (toCompare == null) { return(true); } var writeReader = new StringReader(toWrite); var compareReader = new StringReader(toCompare); string writeLine; string compareLine; do { writeLine = writeReader.ReadLine(); compareLine = compareReader.ReadLine(); if (writeLine == null) { return(compareLine != null); } if (compareLine == null) { return(true); } } while (writeLine.CompareTo(compareLine) == 0); return(true); }