using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; namespace TempFlansh { public class TempHelper { [DllImport("GMH3x32E.dll")] public static extern Int16 UniversalOpenCom(Int16 ini16COMPortNumber, UInt32 inui32BaudRate, Int16 inui16ConverterType, Int16 ini16Parity, Int16 ini16StoppBits); [DllImport("GMH3x32E.dll")] public static extern Int16 GMH_CloseCom(); [DllImport("GMH3x32E.dll")] public static extern UInt32 GetAdditionalDelay(); [DllImport("GMH3x32E.dll")] public static extern UInt32 SetAdditionalDelay(UInt32 inui32AdditionalDelay); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_GetType(Int32 inui32StatusCode, byte* outcarrStatusText); [DllImport("GMH3x32E.dll")] unsafe public static extern byte GMH_GetUnit(Int16 inui16UnitCode, byte* outcarrUnitText); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_Transmit(Int16 ini16DeviceAddress, Int16 ini16TransmitCode, Int16* refi16ptrPriority, double* refdblptrFloatValue, Int32* refi32ptrIntegerValue); [DllImport("GMH3x32E.dll")] unsafe public static extern byte GMH_GetMeasurement(Int16 ini16MeasurementCode, byte* outcarrMeasurementText); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_GetErrorMessageRet(Int16 ini16ErrorCode, byte* outcarrErrorText); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_GetStatusMessage(UInt32 inui32StatusCode, byte* outcarrStatusText); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_GetErrorMessageFL(double indblErrorCode, byte* outcarrErrorText); [DllImport("GMH3x32E.dll")] public static extern Int16 GMH_GetVersionNumber(); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_ReadLogger(Int16 ini16Adresse, UInt32 inui32FileNumber, UInt32* ini32ptrNumberOfData, double* inOADateptrStartDate, double* outdblarrLoggerData); [DllImport("GMH3x32E.dll")] unsafe public static extern Int16 GMH_SearchForComPorts(Int16* refi16ArrComPortNumbers, out Int16 outi16LenghtOfArray); Int16 i16ErrorCode = -1; Int16 i16GMHAddress = -1; Int16 i16ArrayLength = -1; Int16 i16AnzahlDerComPorts = -1; Int16 i16ComPortNummer = -1; Int16[] i16ArrComPortArray = new Int16[255]; Int32 i32GMHSerialNumber = -1; String strGMHTypeString; String strErrorMessage; String strMeasurementText; String strUnitText; public enum GHM_TransmitFunktion : short { AnzeigewertLesen = 0, AnzeigewertSetzen, //2 SystemstatusLesen = 3, ACK, //5 MinwertspeicherLesen = 6, MaxwertspeicherLesen = 7, //8 //9 //10 //11 IDNummerLesen = 12, AdresseZuweisen, AdresseLesen, //15 //16 //17 //18 //19 //20 //21 MinAlarmgrenzeLesen = 22, MaxAlarmgrenzeLesen, AlarmverzögerungLesen, AlarmfunktionLesen, //26 //27 //28 //29 //30 //31 KonfigurationsflagLesen = 32, //33 //34 //35 //36 //37 //38 //39 //40 //41 SchaltausgangEinschaltpunktLesen = 42, SchaltausgangEinschaltpunktSetzen, SchaltausgangAusschaltpunktLesen, SchaltausgangAusschaltpunktSetzen, //46 //47 //48 //49 SchaltausgangVerzögerungLesen = 50, SchaltausgangVerzögerungSetzen, SchaltausgangFunktionLesen, SchaltausgangFuntkonSetzen, //54 //... //99 StatusLöschenOderSetzen = 100, //101 MinAlarmgrenzeSetzen = 103, MaxAlarmgrenzeSetzen, AlarmverzögerungSetzen, AlarmfunktionSetzen, //106 //... //159 KonfigurationsflagSetzen = 160, //161 //... //173 MinwertspeicherSetzen = 174, MaxwertspeicherSetzen, MinMessbereichLesen, MaxMessbereichLesen, MessbereichEinheitLesen, MessbereichDezimalpunktLesen, MessbereichMessartLesen, //181 //... //190 AnzeigeMessartSetzen = 191, MinAnzeigebereichSetzen, MasAnzeigebereichSetzen, AnzeigeEinheitSetzen, AnzeigeDezimalpunktSetzen, //196 //197 //198 AnzeigeMessartLesen = 199, MinAnzeigebereichLesen, MaxAnzeigebereichLesen, AnzeigeeinheitLesen, BatteriezustandLesen, AnzeigeDezimalpunktLesen, AnzeigeMessartErweiterungLesen, //206 //207 KanalzahlLesen = 208, MasterFunktion209, ElektrodenzustandLesen, Masterfunktion211, Masterfunktion212, Masterfunktion213, SteigungsKorrekturLesen = 214, SteigungsKorrekturSetzen, OffsetkorrekturLesen, OffsetkorrekturSetzen, KorrekturfaktorFürOberflächenMessungLesen, KorrekturfaktorFürOberflächenMessungSetzen, AltitudeLesen, AltitudeSetzen, AbschaltverzögerungLesen, AbschaltverzögerungSetzen, LoggerdatenLesen = 224, LoggerzyklusLesen, LoggerzyklusSetzen, LoggeraufzeichnnungStarten, AnzahlDerLoggerDatenLesen, LoggerzustandLesen, LoggerLesezeigerSetzen, LoggerStartStoppzeitLesen, LoggerStartStoppzeitSetzen, EchtzeituhrLesen = 233, EchtzeituhrSetzen, ZeitpunktDerLetztenZeitkorrekturLesen, LoggerspeichergrösseLesen, LoggerFilezahlLesen, LoggerFilezeigerSetzen, LoggerFilelesenAufzeichnungInfo, SonsormodulRücksetzen, SensormodulNeustart, //242 //... //247 GerätespezifischeFunktion = 248, //249 //... //253 ProgrammkennungLesen = 254, //255 //... //259 LoggerdatenLesenManuellerLogger = 260, GrösseFreierLoggerspeicherLesen, AnzahlFreieLoggerfilesLesen, LoggerGilelesenKanalinfo } public enum Sprache : short { Deutsch = 0x0000, Englisch = 0x1000, Tschechisch = 0x2000, Spanisch = 0x3000, } public enum Fehlermeldungen : short { NegativeQuittung = -38, KonnteNachrichtNichtSendenCTSTimeout, RückgabewetIstFehlercode, EchodatenUnvollständig, KeineEchodatenEmpfangen, WertAusserhalbDesGültigenBereichs, FFeldNichtKorrekt, DezimalPunktInformationenUngültig, ÜbergebenerCodeUngültig = -30, EchodatenNichtIdentisch, Testcode, KonntePortNichtSchliessen, RückgeleseneAdresseFalsch, CRCCodeFalsch, NachrichtenlängeFalsch, SensormodulAntwortetNicht, KonnteNachrichtNichtSenden, KonnteSchnittstelleNichtInitialisieren, KonnteDCBNichtBilden = -20, NichtUnterstützteBaudrate = -12, UngültigeBytegrösse = -11, HardwareNichtVorhanden = -10, PegelwandlerWirdNichtUnterstützt = -6, FehlerInStandardParametern, KannKeineWarteschlangeEinrichten, PortNichtBereit, PortBereitsGeöffnet, UngültigePortNummer, OK = 0, } public double ReadCurrentDisplayValue() { Int16 i16Priority; double dblFloatValue; Int32 i32IntergerValue; unsafe { this.i16ErrorCode = GMH_Transmit(1, (Int16)GHM_TransmitFunktion.AnzeigewertLesen, &i16Priority, &dblFloatValue, &i32IntergerValue); } if (i16ErrorCode < 0) { return double.MinValue; } else { return dblFloatValue; } } } }