Example #1
0
        //**********************************************************************************//
        //
        //**********************************************************************************//
        private static void launchRECEIVE()
        {
            try
            {
                int ComptNoReceive = 0;
                while (true)
                {
                    if (FlagReceive)
                    {
                        int iRead = 0;
                        while ((byte)ComPort.ReadChar() != '\n')
                        {
                            ComptNoReceive++;
                            iRead++;
                            if (ComptNoReceive > 2000)
                            {
                                WriteDebug.Pgm("Compteur No Receive : " + ComptNoReceive.ToString(), FlagDebug);
                                ComptNoReceive = 0;
                            }
                        }
                        ComptNoReceive = 0;
                        if (FlagDebug)
                        {
                            if (iRead > 0)
                            {
                                WriteDebug.Pgm("Error decalage : " + iRead, FlagDebug);
                            }
                        }
                        while (FlagReceive)
                        {
                            int Value = readCOM.Pgm(ComPort, false, FlagDebug);
                            //wDebug("=> " + Value.ToString());
                            if (Value > 40000)
                            {
                                WriteDebug.Pgm("=> " + Value.ToString(), FlagDebug);
                                // 40184
                                WriteDebug.Nothing();
                                switch (Value)
                                {
                                case 65530:
                                    MyDLL.writeMessage("WARNING", "MicroSupply disconneted !", "Warning datas received !");
                                    FlagReceive = false;
                                    stop.Pgm(ComPort, intQueue.Count, LenQueue1, LenQueue2, LenQueue3, LenQueue4, FlagDebug);
                                    break;

                                // OK launch datas serial
                                case 65520:
                                    MyDLL.writeMessage("ERROR", "MicroSupply disconneted !", "Low Power Output !");
                                    FlagReceive = false;
                                    stop.Pgm(ComPort, intQueue.Count, LenQueue1, LenQueue2, LenQueue3, LenQueue4, FlagDebug);
                                    break;

                                case 65100:
                                    FlagReceive = false;
                                    try
                                    {
                                        if (ComPort.IsOpen)
                                        {
                                            WriteDebug.Pgm("Send data : E", FlagDebug);
                                            ComPort.Write("E");
                                        }
                                    }
                                    catch (Exception) { }
                                    try
                                    {
                                        if (ComPort.IsOpen)
                                        {
                                            Thread.Sleep(500);
                                            ComPort.Close();
                                        }
                                    }
                                    catch (Exception) { }
                                    Thread.Sleep(500);
                                    MyDLL.writeMessage("ERROR", "MicroSupply Error Serial Port", "ERROR Serial Port ! \n\n EXIT");
                                    t.Abort();
                                    Environment.Exit(0);
                                    break;

                                default:
                                    break;
                                }
                            }
                            else
                            {
                                intQueue.Enqueue(Value);
                                if (intQueue.Count > LenQueue)
                                {
                                    int firstToLeave = intQueue.Dequeue();
                                }
                                MyDLL.addData(Value);
                                if (MyDLL.getStatusScale())
                                {
                                    int ValScale = MyDLL.getScale();
                                    if (ValScale == 0)
                                    {
                                        MyDLL.setValueY("10", "20", "30", "40", "µA");
                                    }
                                    else
                                    {
                                        if (ValScale == 1)
                                        {
                                            MyDLL.setValueY("100", "200", "300", "400", "µA");
                                        }
                                        else
                                        {
                                            if (ValScale == 10)
                                            {
                                                MyDLL.setValueY("1", "2", "3", "4", "mA");
                                            }
                                            else
                                            {
                                                if (ValScale == 100)
                                                {
                                                    MyDLL.setValueY("10", "20", "30", "40", "mA");
                                                }
                                                else
                                                {
                                                    MyDLL.setValueY("-", "-", "-", "-", "?");
                                                }
                                            }
                                        }
                                        WriteDebug.Nothing();
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        Thread.Sleep(100);
                    }
                }
            }
            catch (Exception)
            {
                FlagReceive = false;
                MyDLL.setVisible("START", false);
                MyDLL.setVisible("STOP", false);
            }
        }