using Data; using MTSSDKLib; using System; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.IO.Ports; using System.Text; internal class Class2_serialWB { private BackgroundWorker backgroundWorker_0; private bool bool_0; private bool bool_1; private bool bool_2; private byte[] byte_0; private Class18 class18_0; private FrmMain frmMain_0; private double double_0; public static double[] double_1 = new double[] { 2.33, 2.26, 2.2, 2.13, 2.07, 2.01, 1.95, 1.9, 1.85, 1.8, 1.75, 1.7, 1.66, 1.62, 1.58, 1.54, 1.5, 1.47, 1.44, 1.4, 1.37, 1.34, 1.31, 1.29, 1.26, 1.24, 1.21, 1.19, 1.17, 1.15, 1.12, 1.1, 1.08, 1.06, 1.05, 1.03, 1.0, 1.0, 0.99, 0.98, 0.97, 0.96, 0.95, 0.94, 0.93, 0.92, 0.92, 0.91, 0.9, 0.89, 0.89, 0.88, 0.87, 0.86, 0.86, 0.85, 0.84, 0.84, 0.83, 0.83, 0.82, 0.81, 0.81, 0.8, 0.8, 0.79, 0.79, 0.78, 0.78, 0.77, 0.77, 0.76, 0.75, 0.75, 0.74, 0.74, 0.73, 0.73, 0.72, 0.72, 0.71, 0.71, 0.7, 0.7, 0.69 }; private int int_2; private MTS mts_0; private SerialPort serialPort_0; public string[] string_0; private bool Loading = true; internal Class2_serialWB(ref Class18 rm, ref FrmMain rm2) { this.class18_0 = rm; this.frmMain_0 = rm2; this.backgroundWorker_0 = new BackgroundWorker(); this.backgroundWorker_0.DoWork += new DoWorkEventHandler(this.backgroundWorker_0_DoWork); this.backgroundWorker_0.WorkerSupportsCancellation = true; //this.LogThis("Background worker created"); this.method_16(); //this.LogThis("innovate Init + GetPorts"); } private void backgroundWorker_0_DoWork(object sender, DoWorkEventArgs e) { if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.TechEdge) { //this.LogThis("TE 2.0 frame set to port"); this.serialPort_0.NewLine = "" + Environment.NewLine + ""; this.serialPort_0.WriteLine("s03e1"); this.serialPort_0.DiscardInBuffer(); } StringBuilder builder = new StringBuilder(); int num = 0; int num2 = 0; int num3 = 0; bool flag = false; byte[] buffer = new byte[] { 0 }; Label_006A: if (!this.backgroundWorker_0.CancellationPending) { try { string str = string.Empty; if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.FJO) { double num4 = 0.0; while (num2 <= 10) { //this.LogThis("byte to read: " + this.serialPort_0.BytesToRead.ToString()); num = this.serialPort_0.ReadByte(); str = str + Convert.ToChar(num); if (num == 10) { //this.LogThis("detected 0x0a"); break; } num2++; } //this.LogThis("Received FJO line: " + str.ToString()); if (builder.ToString().Contains("H-1")) { this.double_0 = 0.0; } else if (builder.ToString().Contains(".")) { num4 = double.Parse(builder.ToString()) / 14.7; this.double_0 = num4; } else if (builder.ToString().Contains("Err")) { this.bool_0 = false; this.serialPort_0.Close(); this.serialPort_0.Dispose(); this.serialPort_0 = null; this.LogThis("error detected: " + builder.ToString()); goto Label_09D1; //throw new Exception("error detected: " + builder.ToString()); } goto Label_006A; } if (this.class18_0.class10_settings_0.wideband_Serial_0 != Wideband_Serial.TechEdge) { goto Label_03B7; } bool flag2 = false; goto Label_02D4; Label_01E9: //this.LogThis("byte to read: " + this.serialPort_0.BytesToRead.ToString()); while (this.serialPort_0.BytesToRead < 0x1c) { } byte num6 = (byte) this.serialPort_0.ReadByte(); byte num7 = 0; //this.LogThis("b1: " + num6.ToString("X2")); if (num6 != 90) { goto Label_01E9; } num7 = (byte) this.serialPort_0.ReadByte(); if (num6 != 90) { goto Label_01E9; } //this.LogThis("b2: " + num7.ToString("X2")); //this.LogThis("Te_frame_detected"); flag2 = true; this.byte_0[0] = num6; this.byte_0[1] = num7; for (int i = 0; i < 0x1a; i++) { this.byte_0[2 + i] = (byte) this.serialPort_0.ReadByte(); } //this.LogThis("read remaining 26 bytes"); Label_02D4: if (!flag2) { goto Label_01E9; } //this.LogThis("Reading/calc frame"); int num9 = this.class18_0.method_146(this.byte_0[6], this.byte_0[5]); //this.LogThis("b8/9: " + num9.ToString()); byte num10 = 0; byte num11 = 0; num10 = this.byte_0[0x19]; num11 = this.byte_0[0x1a]; //this.LogThis("Status 1: " + num10.ToString() + " Status 2: " + num11.ToString()); if ((num11 == 0) && (num10 == 3)) { this.serialPort_0.DiscardInBuffer(); double num12 = (((double) num9) / 8192.0) + 0.5; //this.LogThis("Lambda temp: " + num12.ToString()); this.double_0 = num12; } else { this.LogThis("Status byte 27 not 0"); } goto Label_006A; Label_03B7: if (this.class18_0.class10_settings_0.wideband_Serial_0 != Wideband_Serial.Zeitronix) { goto Label_0560; } bool flag3 = false; goto Label_04F0; Label_03D5: //this.LogThis("byte to read: " + this.serialPort_0.BytesToRead.ToString()); byte num13 = (byte) this.serialPort_0.ReadByte(); byte num14 = 0; byte num15 = 0; //this.LogThis("b1: " + num13.ToString("X2")); if (num13 != 0) { goto Label_03D5; } num14 = (byte) this.serialPort_0.ReadByte(); //this.LogThis("b2: " + num14.ToString("X2")); if (num14 != 1) { goto Label_03D5; } num15 = (byte) this.serialPort_0.ReadByte(); //this.LogThis("b3: " + num15.ToString("X2")); if (num15 != 2) { goto Label_03D5; } //this.LogThis("ZE_frame_detected"); flag3 = true; this.byte_0[0] = num13; this.byte_0[1] = num14; this.byte_0[2] = num15; for (int j = 0; j < 11; j++) { this.byte_0[3 + j] = (byte) this.serialPort_0.ReadByte(); } //this.LogThis("read remaning 11 bytes"); Label_04F0: if (!flag3) { goto Label_03D5; } //this.LogThis("Reading/calc frame"); double num17 = ((double) this.byte_0[3]) / 10.0; //this.LogThis("Afr temp: " + num17.ToString()); double num18 = num17 / 14.7; //this.LogThis("Lambda temp: " + num18.ToString()); this.double_0 = num18; goto Label_006A; Label_0560: if (this.class18_0.class10_settings_0.wideband_Serial_0 != Wideband_Serial.Plx) { goto Label_07F4; } bool flag4 = false; goto Label_05E0; Label_057B: //this.LogThis("byte to read: " + this.serialPort_0.BytesToRead.ToString()); byte num19 = (byte) this.serialPort_0.ReadByte(); //this.LogThis("b1: " + num19.ToString("X2")); if (num19 != 0xff) { goto Label_057B; } //this.LogThis("Plx_frame_detected last 0xff, read frame"); flag4 = true; Label_05E0: if (!flag4) { goto Label_057B; } Label_05E4: if (this.backgroundWorker_0.CancellationPending) { goto Label_09D1; } while (this.serialPort_0.BytesToRead < 9) { } //this.LogThis("read remaning 9 bytes"); for (int k = 0; k < 9; k++) { this.byte_0[k] = (byte) this.serialPort_0.ReadByte(); } if (this.byte_0[8] == 0xff) { //this.LogThis("frame: " + this.byte_0[0].ToString("X2") + " " + this.byte_0[1].ToString("X2") + " " + this.byte_0[2].ToString("X2") + " " + this.byte_0[3].ToString("X2") + " " + this.byte_0[4].ToString("X2") + " " + this.byte_0[5].ToString("X2") + " " + this.byte_0[6].ToString("X2") + " " + this.byte_0[7].ToString("X2") + " " + this.byte_0[8].ToString("X2") + " "); double num21 = (this.byte_0[7] * 0.0026667) + 0.68; //this.LogThis("Lambda temp: " + num21.ToString()); this.double_0 = num21; goto Label_05E4; } goto Label_006A; Label_07F4: if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.Aem) { double num22 = 0.0; str = this.serialPort_0.ReadLine(); //this.LogThis("Received AE< line: " + str.ToString()); if (str.ToString().Contains(".")) { double num23 = double.Parse(str.ToString()); if (num23 > 2.0) { num22 = num23 / 14.7; } this.double_0 = num22; } goto Label_006A; } if (this.class18_0.class10_settings_0.wideband_Serial_0 != Wideband_Serial.JAW) { goto Label_09D1; } Label_089A: if (!flag) { //this.LogThis("Sending request 0x00"); this.serialPort_0.Write(buffer, 0, 1); } //this.LogThis("byte to read: " + this.serialPort_0.BytesToRead.ToString()); if (this.serialPort_0.BytesToRead < 6) { flag = true; goto Label_089A; } flag = false; for (int m = 0; m < 6; m++) { this.byte_0[m] = (byte) this.serialPort_0.ReadByte(); } //this.LogThis("read remaning 6 bytes"); //this.LogThis("Reading/calc frame"); double num25 = this.byte_0[1]; //this.LogThis("Jaw wb temp: " + num25.ToString()); if (num25 < 15.0) { this.LogThis("Jaw temp smaller then 16"); } else { double num26 = double_1[this.byte_0[0]]; //this.LogThis("Lambda temp: " + num26.ToString()); this.double_0 = num26; } goto Label_006A; } catch (Exception exception) { if (this.serialPort_0.IsOpen) { num3++; this.LogThis("" + exception.Message); if (num3 >= 9) { goto Label_09D1; //throw exception; } goto Label_006A; } } } Label_09D1: builder = null; num2 = 0; num = 0; } public void method_0() { //if (!Loading) this.LogThis("Selected: " + this.class18_0.class10_settings_0.wideband_Serial_0.ToString()); /*if (this.class18_0.class10_0.wideband_Serial_0 == Wideband_Serial.const_0) { this.method_15(); if (!Loading) this.LogThis("Innovate ports created"); } else {*/ this.string_0 = new string[20]; for (int i = 0; i <= 0x13; i++) this.string_0[i] = "COM" + ((i + 1)).ToString(); //if (!Loading) this.LogThis("comm ports 20 created"); //} if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.TechEdge) { this.byte_0 = new byte[this.method_14()]; //if (!Loading) this.LogThis("Serial frame (" + this.class18_0.class10_settings_0.wideband_Serial_0.ToString() + ") with size:" + this.method_14().ToString() + " created"); } else if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.Zeitronix) { this.byte_0 = new byte[this.method_14()]; //if (!Loading) this.LogThis("Serial frame (" + this.class18_0.class10_settings_0.wideband_Serial_0.ToString() + ") with size:" + this.method_14().ToString() + " created"); } if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.Plx) { this.byte_0 = new byte[this.method_14()]; //if (!Loading) this.LogThis("Serial frame (" + this.class18_0.class10_settings_0.wideband_Serial_0.ToString() + ") with size:" + this.method_14().ToString() + " created"); } Loading = false; } public double method_1() { if (!this.method_4()) { return 0.0; } if ((this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.const_0) && this.bool_2) { this.LogThis("Innovate Connection Error detected"); return 0.0; //throw new Exception("Innovate Connection Error detected"); } return this.double_0; } private Parity method_10() { switch (this.class18_0.class10_settings_0.wideband_Serial_0) { case Wideband_Serial.const_0: break; //throw new Exception("parity selection failed"); case Wideband_Serial.FJO: return Parity.None; case Wideband_Serial.TechEdge: return Parity.None; case Wideband_Serial.Zeitronix: return Parity.None; case Wideband_Serial.Aem: return Parity.None; case Wideband_Serial.Plx: return Parity.Even; } this.LogThis("parity selection failed"); return Parity.None; //throw new Exception("parity selection failed"); } private StopBits method_11() { switch (this.class18_0.class10_settings_0.wideband_Serial_0) { case Wideband_Serial.const_0: break; //throw new Exception("stop bit selection failed"); case Wideband_Serial.FJO: return StopBits.One; case Wideband_Serial.TechEdge: return StopBits.One; case Wideband_Serial.Zeitronix: return StopBits.One; case Wideband_Serial.Aem: return StopBits.One; case Wideband_Serial.Plx: return StopBits.One; case Wideband_Serial.JAW: return StopBits.One; } this.LogThis("stop bit selection failed"); return StopBits.One; //throw new Exception("stop bit selection failed"); } private int method_12() { switch (this.class18_0.class10_settings_0.wideband_Serial_0) { case Wideband_Serial.const_0: break; //throw new Exception("data bit selection failed"); case Wideband_Serial.FJO: return 8; case Wideband_Serial.TechEdge: return 8; case Wideband_Serial.Zeitronix: return 8; case Wideband_Serial.Aem: return 8; case Wideband_Serial.Plx: return 8; case Wideband_Serial.JAW: return 8; } this.LogThis("data bit selection failed"); return 8; //throw new Exception("data bit selection failed"); } private string method_13() { return this.string_0[this.method_7()].ToString(); } private int method_14() { switch (this.class18_0.class10_settings_0.wideband_Serial_0) { case Wideband_Serial.const_0: break; //throw new Exception("frame seize selection failed"); case Wideband_Serial.FJO: break; //throw new Exception("frame seize selection failed"); case Wideband_Serial.TechEdge: return 0x1c; case Wideband_Serial.Zeitronix: return 14; case Wideband_Serial.Plx: return 9; case Wideband_Serial.JAW: return 6; } this.LogThis("frame size selection failed"); return 9; //throw new Exception("frame seize selection failed"); } //################################################################################# public void method_15() { int portCount = this.mts_0.PortCount; this.string_0 = new string[portCount]; if (portCount != 0) { for (int i = 0; i < portCount; i++) { this.mts_0.CurrentPort = i; this.string_0[i] = this.mts_0.PortName; } } } private void method_16() { try { this.mts_0 = new MTS(); this.mts_0.ConnectionError += new _IMTSEvents_ConnectionErrorEventHandler(this.method_19); this.mts_0.ConnectionEvent += new _IMTSEvents_ConnectionEventEventHandler(this.method_18); this.mts_0.NewData += new _IMTSEvents_NewDataEventHandler(this.method_17); } catch { } } private void method_17() { Enum0 inputFunction; //this.LogThis("innovate new data()"); double inputSample = 0.0; this.bool_2 = false; if (this.mts_0.InputCount > 0) { this.int_2++; inputSample = this.mts_0.InputSample; inputFunction = (Enum0)this.mts_0.InputFunction; if (this.mts_0.InputType == 1) { if (inputFunction == Enum0.const_0) { inputSample = (inputSample * 0.001) + 0.5; } else { if (inputFunction != Enum0.const_1) { goto Label_00DB; } inputSample *= 0.1; } } else { if (this.mts_0.InputType != 0) { goto Label_00DB; } if (inputFunction == Enum0.const_0) { inputSample = (inputSample * 0.001) + 0.5; } else { if (inputFunction != Enum0.const_1) { goto Label_00DB; } inputSample *= 0.1; } } this.double_0 = inputSample; this.int_2 = 0; } return; Label_00DB: this.int_2 = 0; switch (inputFunction) { case Enum0.const_2: case Enum0.const_3: break; case Enum0.const_4: this.double_0 = 0.0; return; case Enum0.const_5: this.double_0 = 0.0; return; case Enum0.const_6: this.double_0 = 0.0; return; case Enum0.const_7: this.double_0 = 0.0; return; case Enum0.const_8: this.double_0 = 0.0; return; case Enum0.const_9: this.double_0 = 0.0; return; case Enum0.const_10: this.double_0 = 0.0; break; default: return; } } private void method_18(int int_3) { if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.const_0) { //this.LogThis("innovate event : " + int_3.ToString()); switch (int_3) { case -1: this.bool_1 = false; this.bool_0 = this.bool_1; this.bool_2 = true; this.LogThis("Innovate wideband not detected"); return; //throw new Exception("Innovate wideband not detected"); case 0: this.bool_1 = true; this.bool_0 = this.bool_1; this.bool_2 = false; return; } this.bool_1 = false; this.bool_0 = this.bool_1; this.bool_2 = true; this.LogThis("Innovate error: " + int_3.ToString()); //throw new Exception("Innovate error: " + int_3.ToString()); } } private void method_19() { if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.const_0) { this.LogThis("innovate connection error"); this.bool_2 = true; this.mts_0.Disconnect(); } } //############################################################################ public bool method_2() { this.LogThis("Connecting: " + this.class18_0.class10_settings_0.wideband_Serial_0.ToString()); //########################################### if (this.class18_0.class10_settings_0.wideband_Serial_0 == Wideband_Serial.const_0) { this.mts_0.CurrentPort = this.method_7(); this.mts_0.Connect(); if (!this.bool_1) { this.LogThis("Innovate wideband not detected"); return this.bool_1; //throw new Exception("Innovate wideband not detected"); } //this.LogThis("Innovate SDK startdata"); this.mts_0.StartData(); this.LogThis("Innovate SDK connected"); return this.bool_1; } //########################################### try { this.serialPort_0 = new SerialPort(this.method_13(), this.method_9(), this.method_10(), this.method_12(), this.method_11()); this.serialPort_0.Open(); this.serialPort_0.ReadTimeout = 200; //this.LogThis("Serial port created " + this.method_13().ToString() + " " + this.method_9().ToString() + " " + this.method_10().ToString() + " " + this.method_12().ToString() + " " + this.method_11().ToString()); } catch (Exception exception) { this.serialPort_0.Close(); this.LogThis(exception.Message); this.bool_1 = false; return this.bool_1; //throw exception; } this.bool_0 = this.serialPort_0.IsOpen; if (!this.bool_0) { this.LogThis("Unable to open comm port"); return this.bool_0; //throw new Exception("Unable to open comm port"); } this.backgroundWorker_0.RunWorkerAsync(); //this.LogThis("Running background worker for Wideband"); return this.bool_0; } public void method_3() { this.mts_0.Disconnect(); } public bool method_4() { return this.bool_0; } private void LogThis(string string_1) { this.frmMain_0.LogThis("Wideband - " + string_1); } private int method_7() { return this.class18_0.class10_settings_0.int_10; } private int method_9() { switch (this.class18_0.class10_settings_0.wideband_Serial_0) { case Wideband_Serial.const_0: break; //throw new Exception("Baud selection failed"); case Wideband_Serial.FJO: return 0x4b00; case Wideband_Serial.TechEdge: return 0x4b00; case Wideband_Serial.Zeitronix: return 0x2580; case Wideband_Serial.Aem: return 0x2580; case Wideband_Serial.Plx: return 0x960; case Wideband_Serial.JAW: return 0x3840; } this.LogThis("Baud selection failed"); return 0x960; //throw new Exception("Baud selection failed"); } public enum Enum0 { const_0, const_1, const_2, const_3, const_4, const_5, const_6, const_7, const_8, const_9, const_10 } }