示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static string GetDataFromScale()
        {
            if (device != null)
            {
                device.Close();
            }
            device = new UART();
            device.Open(
                MyGlobal.MySetting.SerialPortName,
                MyGlobal.MySetting.SerialBaudRate,
                MyGlobal.MySetting.SerialDataBits,
                myConverter.FromStringToSerialParity(MyGlobal.MySetting.SerialParity),
                myConverter.FromStringToSerialStopBits(MyGlobal.MySetting.SerialStopBits)
                );

            if (device == null)
            {
                return(null);
            }
            if (device.IsConnected() == false)
            {
                return(null);
            }

            //clear serial receive buffer
            string data = null;

            device.Read();

            //wait time
            int wait_time; bool r = int.TryParse(MyGlobal.MySetting.WaitTime, out wait_time);

            wait_time = r ? wait_time : 100;
            Thread.Sleep(wait_time);

            //read newest data
            data = device.Read();
            if (data == null)
            {
                return(null);
            }

            //process data
            string value = null;

            if (data.Contains("\r\n"))
            {
                string[] buffer = data.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                value = buffer[buffer.Length - 2].Trim();
            }
            device.Close();
            return(value);
        }
示例#2
0
        public static bool Output(LampStatus lampstatus)
        {
            try {
                if (thrlamp != null)
                {
                    if (thrlamp.IsAlive == true)
                    {
                        thrlamp.Abort();
                        device.Write("0");
                        Thread.Sleep(100);
                        device.Close();
                    }
                }

                if (device != null)
                {
                    device.Close();
                }
                device = new UART();
                device.Open(
                    MyGlobal.MySetting.LampPortName,
                    MyGlobal.MySetting.LampBaudRate,
                    MyGlobal.MySetting.LampDataBits,
                    myConverter.FromStringToSerialParity(MyGlobal.MySetting.LampParity),
                    myConverter.FromStringToSerialStopBits(MyGlobal.MySetting.LampStopBits)
                    );

                if (device == null)
                {
                    return(false);
                }
                if (device.IsConnected() == false)
                {
                    return(false);
                }

                int _ref = (int)lampstatus;
                switch (_ref)
                {
                case -1: {
                    MyGlobal.OutputLamp = "0";         // off all lamp
                    break;
                }

                case 0: {
                    MyGlobal.OutputLamp = "p";         //on led green
                    break;
                }

                case 1: {
                    MyGlobal.OutputLamp = "f";         //on led red
                    break;
                }

                case 2: {
                    MyGlobal.OutputLamp = "w";         //on led yellow
                    break;
                }

                default: {
                    MyGlobal.OutputLamp = "0";
                    break;
                }
                }

                thrlamp = new Thread(new ThreadStart(() => {
                    if (MyGlobal.OutputLamp == "0")
                    {
                        device.Write("0");
                        Thread.Sleep(100);
                        device.Close();
                    }
                    else
                    {
                        device.Write(MyGlobal.OutputLamp);
                        int delay = MyGlobal.OutputLamp == "p" ? 500 : 3000;
                        Thread.Sleep(delay);
                        device.Write("0");
                        Thread.Sleep(100);
                        device.Close();
                    }
                }));
                thrlamp.IsBackground = true;
                thrlamp.Start();

                return(true);
            }
            catch {
                return(false);
            }
        }
示例#3
0
        ////ST, GS,+    0.0 g
        ////ST, GS,+  106.9 g
        ////US, GS,+    1.2 g

        /// <summary>
        /// Return null if device is not connect
        /// </summary>
        /// <returns></returns>
        public static string GetWeight()
        {
            if (device != null)
            {
                device.Close();
            }
            device = new UART();
            device.Open(
                MyGlobal.MySetting.SerialPortName,
                MyGlobal.MySetting.SerialBaudRate,
                MyGlobal.MySetting.SerialDataBits,
                myConverter.FromStringToSerialParity(MyGlobal.MySetting.SerialParity),
                myConverter.FromStringToSerialStopBits(MyGlobal.MySetting.SerialStopBits)
                );

            if (device == null)
            {
                return(null);
            }
            if (device.IsConnected() == false)
            {
                return(null);
            }

            int count = 0;

REP:
            count++;
            //clear serial receive buffer
            string data = null;

            device.Read();

            int wait_time; bool r = int.TryParse(MyGlobal.MySetting.WaitTime, out wait_time);

            wait_time = r ? wait_time : 100;
            Thread.Sleep(wait_time);

            //get data newest
            data = device.Read();

            //process data
            string value = null;
            string sign  = "";

            if (data.Contains("\r\n"))
            {
                string[] buffer = data.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                value = buffer[buffer.Length - 2].Trim();

                try {
                    buffer = value.Split(',');
                    value  = buffer[2].Replace("g", "").Replace("-", "").Replace("+", "").Trim();
                    sign   = buffer[2].Contains("-") ? "-" : "";
                    value  = sign + value;
                }
                catch {
                    if (count < 3)
                    {
                        goto REP;
                    }
                }
            }
            device.Close();

            if (count >= 3)
            {
                return(null);
            }
            else
            {
                return(value);
            }
        }