//**********************************************************************************// // //**********************************************************************************// 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); } }