/// <summary> /// Get all grbl parameters /// </summary> /// <returns>List of grbl parameter object</returns> public List <GrblParameterBase> GetParameters() { List <GrblParameterBase> result = new List <GrblParameterBase>(); foreach (var entry in parameterHash) { string id = entry.Key.ToString(); string val = entry.Value.ToString(); GrblParameterBase param = new GrblParameterBase(id, val); result.Add(param); } return(result.OrderBy(p => Convert.ToInt16(p.ID)).ToList <GrblParameterBase>()); }
/// <summary> /// Process Grbl parameter string /// </summary> /// <param name="parameterStr"></param> private void ProcessParameter(string parameterStr) { parameterStr = parameterStr.Substring(1); string[] flds = parameterStr.Split('='); SetParameter(flds[0].Trim(), flds[1].Trim()); if (GrblParameterBase.IsLastParameter(flds[0])) { GrblResponseEventArgs args = new GrblResponseEventArgs() { EventType = "ParameterUpdate" }; OnResponseReceived(args); } }
/// <summary> /// Open grbl port /// </summary> /// <param name="portDesc">port description object</param> /// <returns></returns> public bool Open(PortDesc portDesc) { bool IsConnected = false; //Initiate parameter descriptions and types GrblParameterBase.Init(); //Initialize the serial port grblPort = new SerialPort(portDesc.DeviceId, 115200, Parity.None, 8, StopBits.One); //Setup event handler grblPort.DataReceived += GrblPort_DataReceived; grblPort.ErrorReceived += GrblPort_ErrorReceived; //Open the port if (!grblPort.IsOpen) { try { grblPort.Open(); this.portDesc = portDesc; System.Threading.Thread.Sleep(1000); CMD_RESET(); System.Threading.Thread.Sleep(1000); CMD_QUERY(); } catch (Exception e) { //Raise port open error event } } else { //Raise port already open event; } if (grblPort.IsOpen) { PortStateChangeArg arg = new PortStateChangeArg(); arg.State = "Connected"; OnPortEvent(arg); CMD_GETOFFSET(); queryThread = new Thread(delegate() { StartQueryLoop(); }); queryThread.Start(); IsConnected = true; } return(IsConnected); }