/// <summary> /// Write COM port /// </summary> /// <param name="text"></param> /// <returns></returns> public bool WriteCOM(string text) { bool success = false; try { if (!Port.IsOpen) { OpenCOM(Port.PortName); } if (Port.IsOpen) { Port.WriteLine(text); Port.DiscardOutBuffer(); success = true; } } catch (Exception e) { SLConstant.ShowException(e); } return(success); }
/// <summary> /// Read COM port /// </summary> /// <returns></returns> public string ReadCOM() { int count = Port.BytesToRead; byte[] msg = new byte[count]; string MSG = ""; try { if (!Port.IsOpen) { OpenCOM(Port.PortName); } if (Port.IsOpen) { Port.Read(msg, 0, count); Port.DiscardInBuffer(); MSG = Port.Encoding.GetString(msg); } } catch (Exception e) { SLConstant.ShowException(e); } return(MSG); }
/// <summary> /// SerialDataReceived EventHandler Delegate /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected virtual void DataReceived(object sender, SerialDataReceivedEventArgs e) { newReceivedData = ""; try { newReceivedData = Port.ReadExisting(); receivedDataLength += newReceivedData.Length; } catch (Exception ex) { SLConstant.ShowException(ex); } }
/// <summary> /// Close current port /// </summary> public void CloseCOM() { try { if (Port.IsOpen) { Port.Close(); } } catch (Exception e) { SLConstant.ShowException(e); } }
/// <summary> /// Open a COM port with custom parameters /// </summary> /// <param name="portName"></param> /// <param name="readTimeout">0: InfiniteTimeout(ms)</param> /// <param name="writeTimeout">0: InfiniteTimeout(ms)</param> /// <param name="baudRate"></param> /// <param name="parity"></param> /// <param name="dataBits"></param> /// <param name="stopBits"></param> /// <param name="handShake"></param> /// <returns></returns> public bool OpenCOM(string portName, int readTimeout, int writeTimeout, int baudRate, Parity parity, int dataBits, StopBits stopBits, Handshake handShake) { bool hr = false; try { if (isCOMExist) { if (!Port.IsOpen) { if (readTimeout > 0) { Port.ReadTimeout = readTimeout; } else { Port.ReadTimeout = SerialPort.InfiniteTimeout; } if (writeTimeout > 0) { Port.WriteTimeout = writeTimeout; } else { Port.WriteTimeout = SerialPort.InfiniteTimeout; } Port.PortName = portName; Port.BaudRate = baudRate; Port.Parity = parity; Port.DataBits = dataBits; Port.StopBits = stopBits; Port.Handshake = handShake; Port.DataReceived += DataReceivedEventHandler; Port.ErrorReceived += ErrorReceivedEventHandler; Port.PinChanged += PinChangedEventHandler; Port.Open(); hr = true; } } } catch (Exception e) { SLConstant.ShowException(e); } return(hr); }
/// <summary> /// Init Each Element of Collection According to StiLib Configuration, Custom Vision Stimulus Type and Parameters Object /// </summary> /// <param name="count"></param> /// <param name="vstype"></param> /// <param name="gd"></param> /// <param name="slconfig"></param> /// <param name="service"></param> /// <param name="path"></param> /// <param name="vspara"></param> public virtual void Init(int count, VSType vstype, GraphicsDevice gd, AssemblySettings slconfig, IServiceProvider service, string path, object vspara) { vsType temp = null; try { switch (vstype) { case VSType.Bar: temp = new Bar(gd, slconfig, (BarPara)vspara) as vsType; break; case VSType.Grating: temp = new Grating(gd, slconfig, service, path, (GratingPara)vspara) as vsType; break; case VSType.Image: temp = new Image(gd, slconfig, service, path, (ImagePara)vspara) as vsType; break; case VSType.Primitive: temp = new Primitive(gd, slconfig, (PrimitivePara)vspara) as vsType; break; case VSType.SLModel: temp = new SLModel(gd, slconfig, service, path, (ModelPara)vspara) as vsType; break; case VSType.SLQuad: temp = new SLQuad(gd, slconfig, service, path, (Quad)vspara) as vsType; break; case VSType.SLVideo: temp = new SLVideo(gd, slconfig, service, path, (VideoPara)vspara) as vsType; break; case VSType.Text: temp = new Text(gd, slconfig, service, path, (TextPara)vspara) as vsType; break; } Init(count, gd, temp); } catch (Exception e) { SLConstant.ShowException(e); } }
/// <summary> /// Log message string /// </summary> /// <param name="info"></param> public void Log(string info) { try { message.Append(DateTime.Now.ToString()).Append(" --- ").Append(info); writer.WriteLine(message.ToString()); writer.Flush(); } catch (Exception e) { SLConstant.ShowException(e); } finally { message.Remove(0, message.Length); } }