common/TempFlansh/TempHelper.cs

266 lines
8.8 KiB
C#
Raw Normal View History

2026-04-23 15:50:07 +00:00
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;
}
}
}
}