예제 #1
0
파일: SLCOM.cs 프로젝트: thakgit/StiLib
        /// <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);
        }
예제 #2
0
파일: SLCOM.cs 프로젝트: thakgit/StiLib
        /// <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);
        }
예제 #3
0
파일: SLCOM.cs 프로젝트: thakgit/StiLib
 /// <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);
     }
 }
예제 #4
0
파일: SLCOM.cs 프로젝트: thakgit/StiLib
 /// <summary>
 /// Close current port
 /// </summary>
 public void CloseCOM()
 {
     try
     {
         if (Port.IsOpen)
         {
             Port.Close();
         }
     }
     catch (Exception e)
     {
         SLConstant.ShowException(e);
     }
 }
예제 #5
0
파일: SLCOM.cs 프로젝트: thakgit/StiLib
        /// <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);
        }
예제 #6
0
        /// <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);
            }
        }
예제 #7
0
 /// <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);
     }
 }