laatzen/Pruef2000/source/modMBUS_SMS.bas
2021-10-01 11:11:04 +02:00

848 lines
32 KiB
QBasic
Raw Permalink Blame History

Attribute VB_Name = "modMBUS_SMS"
Option Explicit
Private Const OFFSET_4 = 4294967296# ' 2^32
Private Const MAXINT_4 = 2147483647 ' 2^31 -1
Private Const OFFSET_2 = 65536 '2^16
Private Const MAXINT_2 = 32767 '2^15-1
Public Const MBUS_SMS_ERR_OK = &H0
Public Const MBUS_SMS_ERR_PORT_NOT_INITIALIZED = &H1
Public Const MBUS_SMS_ERR_WRITECOMM_ERROR = &H2
Public Const MBUS_SMS_ERR_TIMEOUT = &H3
Public Const MBUS_SMS_ERR_PROT_CHECKSUM_ERROR = &H4
Public Const MBUS_SMS_ERR_ECHO_ONLY = &H5
Public Const MBUS_SMS_ERR_NO_ECHO = &H6
Public Const MBUS_SMS_ERR_ASCIIHEX_TO_BIN_CONV_ERROR = &H7
Public Const MBUS_SMS_ERR_ASSIGNMENT_CFIELD_CIFIELD = &H8
Public Const MBUS_SMS_ERR_NO_RECEIVED_DATA_ASSIGNMENT = &H9
Public Const MBUS_SMS_ERR_WRITECOMM_ABOVE_1024_CHARS = &HA
Public Const MBUS_SMS_ERR_READCOMM_ABOVE_1024_CHARS = &HB
Public Const MBUS_SMS_ERR_SETCOMMSTATE_SET_BAUDRATE = &HC
Public Const MBUS_SMS_ERR_A_FIELD_TX_RX_DIFFERENCE = &HD
Public Const MBUS_SMS_ERR_C_FIELD_VALUE_INVALID = &HE
Public Const MBUS_SMS_ERR_OPENCOMM = &HF
Public Const MBUS_SMS_ERR_BUILDCOMMDCB = &H10
Public Const MBUS_SMS_ERR_SETCOMMSTATE = &H11
Public Const MBUS_SMS_ERR_COMPORT_CANNOT_BE_CHANGED = &H12
Public Const MBUS_SMS_ERR_CLOSEHANDLE = &H13
Public Const MBUS_SMS_ERR_DELAYTIME_NO_BAUDRATE_SET = &H14
Public Const MBUS_SMS_ERR_RECEIVE_BUFFER_TOO_SMALL = &H15
Public Const MBUS_SMS_ERR_OPTO_ON = &H16
Public Const MBUS_SMS_ERR_OPTO_OFF = &H17
Public Const MBUS_SMS_ERR_OPTO_ERROR1 = &H18
Public Const MBUS_SMS_ERR_VARDEF_FILE_NOT_FOUND = &H19
Public Const MBUS_SMS_ERR_CANNOT_LOAD_FILE = &H1A
Public Const MBUS_SMS_ERR_VARDEF_FILE_FIELD_COUNT_LOW = &H1B
Public Const MBUS_SMS_ERR_VARDEF_INVALID_VARIABLE_TYPE = &H1C
Public Const MBUS_SMS_ERR_VARDEF_INVALID_ADDRESS = &H1D
Public Const MBUS_SMS_ERR_VARDEF_INVALID_LENGTH = &H1E
Public Const MBUS_SMS_ERR_UNKNOWN_VARIABLE = &H1F
Public Const MBUS_SMS_ERR_RECEIVE_TELEGRAM_ERROR = &H20
Public Const MBUS_SMS_ERR_VARIABLE_NOT_IN_CRC_SECTION = &H21
Public Const MBUS_SMS_ERR_INVALID_CRC_SECTION_NAME = &H22
Public Const MBUS_SMS_ERR_CRC_SECTION_INVALID_CHECKSUM = &H23
Public Const MBUS_SMS_ERR_RESOURCE_ACCESS_ERROR = &H24
Public Const MBUS_SMS_ERR_UNKNOWN_ERROR = &HFFF
Public Const MBUS_SMS_BAUDRATE_300 = &HB8
Public Const MBUS_SMS_BAUDRATE_2400 = &HBB
Public Const MBUS_SMS_TEST1_ID_LCD_ON = &HE1
Public Const MBUS_SMS_TEST1_ID_LCD_OFF = &HE3
Public Const MBUS_SMS_TEST1_ID_FZV_FZE = &HE0
Public Const MBUS_SMS_TEST1_ID_SELFTEST = &HE2
Public Const MBUS_SMS_TEST1_ID_TEST_CS = &HE8
Public Const MBUS_SMS_TEST1_ID_COPY_RAM_EEPROM = &HEA
Public Const MBUS_SMS_TEST1_ID_START_FLOW_SIMU = &HDC
Public Const MBUS_SMS_TEST1_ID_STOP_FLOW_SIMU = &HDD
Public Const MBUS_SMS_TEST2_ID_ADC = &HD0
Public Const MBUS_SMS_TEST2_ID_ENERGY = &HD6
Public Const MBUS_SMS_TEST2_ID_US = &HDA
Public Const MBUS_SMS_AUTO_INIT_OFF = &H0
Public Const MBUS_SMS_AUTO_INIT_IEC = &H1
Public Const MBUS_SMS_AUTO_INIT_IEC_SCHICHT2 = &H2
Public Const INIT_PSE = &H1
Public Const INIT_KEV1 = &H2
Public Const INIT_HISTORICAL_DATA = &H4
Public Const INIT_LOGGER_HOURLY = &H8
Public Const RESET_PSE = &H10
Public Const RESET_KEV1 = &H20
Public Const INIT_LOGGER_DAILY = &H40
Private MBUS_SMS_Status As Long
Public gblnMapfileLoaded As Boolean
Public gblnOptoAktiv As Boolean
' void CALLCONV Init_MBUS_SMS();
Public Declare Sub Init_MBUS_SMS Lib "MBUS_SMS.dll" ()
' void CALLCONV SetDebugView(BOOL on);
Private Declare Sub SetDebugView Lib "MBUS_SMS.dll" (ByVal blnON As Boolean)
' void CALLCONV SetAutoInit(BYTE autoinit);
Private Declare Sub SetAutoInit Lib "MBUS_SMS.dll" (ByVal autoinit As Byte)
' IECCOM_InitCom2(UINT ComPort, UINT BaudRate, UINT ByteSize, UINT Parity, UINT StopBits);
Private Declare Function IECCOM_InitCom2 Lib "MBUS_SMS.dll" (ByVal comport As Integer, ByVal BAUDRATE As Integer, ByVal ByteSize As Integer, ByVal Parity As Integer, ByVal StopBits As Integer) As Integer
'typedef UINT (CALLBACK *lpIECCOM_InitSchicht2_2)(BYTE A_Feld, BYTE Mode, UINT Timeout, UINT repeat);
Private Declare Function IECCOM_InitSchicht2_2 Lib "MBUS_SMS.dll" (ByVal A_Feld As Byte, ByVal Mode As Byte, ByVal Timeout As Integer, ByVal repeat As Integer) As Integer
Private Declare Function LoadVarDef Lib "MBUS_SMS.dll" (ByVal filename As String) As Integer
Public Declare Function SND_NKE Lib "MBUS_SMS.dll" () As Integer
Public Declare Function REQ_UD2 Lib "MBUS_SMS.dll" (ByVal lpstr_received_buffer As String) As Integer
' UINT CALLCONV IECCOM_SetKopfOn(UINT Timeout);
Public Declare Function IECCOM_SetKopfOn Lib "MBUS_SMS.dll" (ByVal Timeout As Integer) As Integer
' UINT CALLCONV IECCOM_SetKopfOff(void);
Public Declare Function IECCOM_SetKopfOff Lib "MBUS_SMS.dll" () As Integer
' UINT CALLCONV IECCOM_SwitchOpto(UINT OptoFlag);
Public Declare Function IECCOM_SwitchOpto Lib "MBUS_SMS.dll" (ByVal OptoFlag As Integer) As Integer
' typedef UINT (CALLBACK *lpIECCOM_SelectOptoHeader)(UINT SetBaudFlag);
Public Declare Function IECCOM_SelectOptoHeader Lib "MBUS_SMS.dll" (ByVal SetBaudFlag As Integer) As Integer
' UINT CALLCONV IECCOM_SendOptoHeader(void);
Public Declare Function IECCOM_SendOptoHeader Lib "MBUS_SMS.dll" () As Integer
Public Declare Function IECCOM_CloseCom Lib "MBUS_SMS.dll" () As Integer
' MBUS_SMS_Status CALLCONV read_Byte(LPCSTR varname, BYTE *value);
Public Declare Function read_Byte Lib "MBUS_SMS.dll" (ByVal Varname As String, ByRef value As Byte) As Integer
' MBUS_SMS_Status CALLCONV read_Word(LPCSTR varname, WORD *value);
Public Declare Function read_Word Lib "MBUS_SMS.dll" (ByVal Varname As String, ByRef value As Integer) As Integer
' MBUS_SMS_Status CALLCONV read_ULong(LPCSTR varname, ULONG *value);
Public Declare Function read_ULong Lib "MBUS_SMS.dll" (ByVal Varname As String, ByRef value As Long) As Integer
' MBUS_SMS_Status CALLCONV read_Float(LPCSTR varname, float *value);
Public Declare Function read_Float Lib "MBUS_SMS.dll" (ByVal Varname As String, ByRef value As Single) As Integer
'write_Byte(LPCSTR varname, BYTE value)
Public Declare Function write_Byte Lib "MBUS_SMS.dll" (ByVal Varname As String, ByVal value As Byte) As Integer
'write_CP16(LPCSTR varname, LPSTR value)
'write_CP32(LPCSTR varname, LPSTR value)
'write_EEPROM(WORD address, LPSTR write_buffer, BYTE length)
'write_Float(LPCSTR varname, float value)
Public Declare Function write_Float Lib "MBUS_SMS.dll" (ByVal Varname As String, ByVal value As Single) As Integer
'write_Memory(CString memtype, BYTE typebyte, WORD address, LPSTR write_buffer, BYTE length)
'write_Memory(TVarMemType memtype, WORD address, LPSTR write_buffer, BYTE length)
'write_RAM(WORD address, LPSTR write_buffer, BYTE length)
'write_ULong(LPCSTR varname, ULONG value)
Public Declare Function write_ULong Lib "MBUS_SMS.dll" (ByVal Varname As String, ByVal value As Long) As Integer
'write_Var(LPCSTR varname, LPSTR write_buffer)
'write_Var_Typed(CString vartype, LPCSTR varname, BYTE *value, long excpected_size)
'write_Word(LPCSTR varname, WORD value)
Public Declare Function write_Word Lib "MBUS_SMS.dll" (ByVal Varname As String, ByVal value As Integer) As Integer
'MBUS_SMS_Status CALLCONV NOWA_start()
Public Declare Function NOWA_START_FW2 Lib "MBUS_SMS.dll" Alias "NOWA_start" () As Integer
'MBUS_SMS_Status CALLCONV NOWA_stop()
Public Declare Function NOWA_STOP_FW2 Lib "MBUS_SMS.dll" Alias "NOWA_stop" () As Integer
'MBUS_SMS_Status CALLCONV Init_FW2(BYTE cmd)
Public Declare Function Init_FW2 Lib "MBUS_SMS.dll" (ByVal command As Byte) As Integer
' MBUS_SMS_Status CALLCONV do_test2(BYTE test, BYTE index);
Public Declare Function do_test2 Lib "MBUS_SMS.dll" (ByVal bTest As Byte, ByVal nIndex As Byte) As Integer
' MBUS_SMS_Status CALLCONV do_test3(BYTE test, BYTE para1, BYTE para2);
' pDo_test2(0xE8,0x5a);
' MBUS_SMS_Status CALLCONV do_test2(BYTE test, BYTE index)
' Schloss <20>ffnen / Schliessen
Public Declare Function open_fw2 Lib "MBUS_SMS.dll" Alias "open" () As Integer
Public Declare Function close_fw2 Lib "MBUS_SMS.dll" Alias "close" () As Integer
'INITSCHICHT2 init_para;
'LPTSTR Getsleer()
'LPTSTR Getsnull()
'MBUS_SMS_Status CALLCONV DefineEastExtendedLogger(BYTE loggertype, BYTE packageflag)
'MBUS_SMS_Status CALLCONV GetEastExtendedLoggerConfig(BYTE loggertype, BYTE *type, WORD *Index, BYTE *size, BYTE *config,WORD *LastBlockNr)
'MBUS_SMS_Status CALLCONV GetSMS_DLLVersion(LPTSTR version)
'MBUS_SMS_Status CALLCONV Init_FW2(BYTE cmd)
'MBUS_SMS_Status CALLCONV LoadVarDef(LPCSTR filename)
'MBUS_SMS_Status CALLCONV NOWA_start()
'MBUS_SMS_Status CALLCONV NOWA_stop()
'MBUS_SMS_Status CALLCONV REQ_UD2(LPSTR receive_buffer)
'MBUS_SMS_Status CALLCONV SND_NKE()
'MBUS_SMS_Status CALLCONV application_reset()
'MBUS_SMS_Status CALLCONV check_section_crc(LPCSTR sectionname, WORD &crc_calced, WORD &crc_stored)
'MBUS_SMS_Status CALLCONV check_var_section_crc(LPCSTR varname, WORD &crc_calced, WORD &crc_stored)
'MBUS_SMS_Status CALLCONV close()
'MBUS_SMS_Status CALLCONV deselection()
'MBUS_SMS_Status CALLCONV do_test1(BYTE test)
'MBUS_SMS_Status CALLCONV do_test2(BYTE test, BYTE index)
'MBUS_SMS_Status CALLCONV do_test3(BYTE test, BYTE para1, BYTE para2)
'MBUS_SMS_Status CALLCONV jump_display_level(BYTE userlevel,BYTE position)
'MBUS_SMS_Status CALLCONV open()
'MBUS_SMS_Status CALLCONV read_Byte(LPCSTR varname, BYTE *value)
'MBUS_SMS_Status CALLCONV read_CP16(LPCSTR varname, LPSTR value)
'MBUS_SMS_Status CALLCONV read_CP32(LPCSTR varname, LPSTR value)
'MBUS_SMS_Status CALLCONV read_EEPROM(WORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
''' versuch Public Declare Function read_EEPROM Lib "MBUS_SMS.dll" (int_address As Integer, byte_length As Byte, ByVal lpstr_receive_buffer As String, lng_buffer_size As Long) As Integer
'MBUS_SMS_Status CALLCONV read_Float(LPCSTR varname, float *value)
'MBUS_SMS_Status CALLCONV read_RAM(WORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
''' versuch Public Declare Function read_RAM Lib "MBUS_SMS.dll" (int_address As Integer, byte_length As Byte, ByVal lpstr_receive_buffer As String, lng_buffer_size As Long) As Integer
'MBUS_SMS_Status CALLCONV read_ULong(LPCSTR varname, ULONG *value)
'MBUS_SMS_Status CALLCONV read_Var(LPCSTR varname, LPSTR receive_buffer, long buffer_size)
Public Declare Function read_Var Lib "MBUS_SMS.dll" (ByRef Varname As String, ByRef receive_buffer As String, ByRef buffer_size As Long) As Integer
'MBUS_SMS_Status CALLCONV read_Var_Typed(CString vartype, LPCSTR varname, BYTE *value, long excpected_size)
'MBUS_SMS_Status CALLCONV read_Word(LPCSTR varname, WORD *value)
'MBUS_SMS_Status CALLCONV read_bigEEPROM(DWORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status CALLCONV recalc_section_crc(LPCSTR sectionname, WORD &crc_calced, WORD &crc_stored)
'MBUS_SMS_Status CALLCONV recalc_section_crc2(LPCSTR sectionname)
'MBUS_SMS_Status CALLCONV recalc_var_section_crc(LPCSTR varname, WORD &crc_calced, WORD &crc_stored)
'MBUS_SMS_Status CALLCONV recalc_var_section_crc2(LPCSTR varname)
'MBUS_SMS_Status CALLCONV reset_errortime()
'MBUS_SMS_Status CALLCONV reset_maxima()
'MBUS_SMS_Status CALLCONV select_baud(Baudrate_ID baudrate)
'MBUS_SMS_Status CALLCONV select_telegram(BYTE type)
'MBUS_SMS_Status CALLCONV selection(Selection_ID id, WORD man, BYTE gen, BYTE med)
'MBUS_SMS_Status CALLCONV set_BonusMalusTarif(QUADBYTE password,BYTE OnOff, float temperature, BYTE powermode)
'MBUS_SMS_Status CALLCONV set_CzechiaTarif(QUADBYTE password,DWORD Flow)
'MBUS_SMS_Status CALLCONV set_FZE_FZV(BYTE type, float value)
'MBUS_SMS_Status CALLCONV set_ID1(QUADBYTE SC)
'MBUS_SMS_Status CALLCONV set_ID2(QUADBYTE SC, WORD man, BYTE gen, BYTE med)
'MBUS_SMS_Status CALLCONV set_InitCounter1(QUADBYTE value)
'MBUS_SMS_Status CALLCONV set_InitCounter2(QUADBYTE value)
'MBUS_SMS_Status CALLCONV set_ParameterCounter1(QUADBYTE fabnr,QUADBYTE index, BYTE medium, BYTE scaling ,float value)
'MBUS_SMS_Status CALLCONV set_ParameterCounter2(QUADBYTE fabnr,QUADBYTE index, BYTE medium, BYTE scaling ,float value)
'MBUS_SMS_Status CALLCONV set_PrimAdr_Counter1(BYTE adress)
'MBUS_SMS_Status CALLCONV set_PrimAdr_Counter2(BYTE adress)
'MBUS_SMS_Status CALLCONV set_RomaniaTarif(QUADBYTE password,WORD ReturnTemp, WORD DeltaT)
'MBUS_SMS_Status CALLCONV set_SecAdr_Counter1(QUADBYTE adress)
'MBUS_SMS_Status CALLCONV set_SecAdr_Counter2(QUADBYTE adress)
'MBUS_SMS_Status CALLCONV set_address(BYTE address)
'MBUS_SMS_Status CALLCONV set_averaging_time(BYTE min1, BYTE min2)
'MBUS_SMS_Status CALLCONV set_cooling(float TV, float delta_T)
'MBUS_SMS_Status CALLCONV set_counter_1(UINT bcd_value)
'MBUS_SMS_Status CALLCONV set_counter_1_2(QUADBYTE ID1, BYTE VIF1, float value1, QUADBYTE ID2, BYTE VIF2, float value2)
'MBUS_SMS_Status CALLCONV set_counter_2(UINT bcd_value)
'MBUS_SMS_Status CALLCONV set_credit_off()
'MBUS_SMS_Status CALLCONV set_credit_on()
'MBUS_SMS_Status CALLCONV set_customer_loc(QUADBYTE NR)
'MBUS_SMS_Status CALLCONV set_date_time(BYTE year, BYTE month, BYTE day, BYTE hour, BYTE minute)
'MBUS_SMS_Status CALLCONV set_date_time_pw(BYTE year, BYTE month, BYTE day, BYTE hour, BYTE minute, QUADBYTE password)
'MBUS_SMS_Status CALLCONV set_display(DISPLAYBUF displaybuf)
'MBUS_SMS_Status CALLCONV set_fixed_date(USHORT date)
'MBUS_SMS_Status CALLCONV set_logger_intervall_time(WORD minuten)
'MBUS_SMS_Status CALLCONV set_password(QUADBYTE pw)
'MBUS_SMS_Status CALLCONV set_pulsmode(BYTE type, float val)
'MBUS_SMS_Status CALLCONV set_tarif(BYTE mode, float value)
'MBUS_SMS_Status CALLCONV set_tarif_time(WORD var1, WORD var2)
'MBUS_SMS_Status CALLCONV set_var_bits_Byte(LPCSTR varname, BYTE setmask, BYTE clearmask)
'MBUS_SMS_Status CALLCONV set_var_bits_Word(LPCSTR varname, WORD setmask, WORD clearmask)
'MBUS_SMS_Status CALLCONV show_display_level(BYTE levelN)
'MBUS_SMS_Status CALLCONV write_Byte(LPCSTR varname, BYTE value)
'MBUS_SMS_Status CALLCONV write_CP16(LPCSTR varname, LPSTR value)
'MBUS_SMS_Status CALLCONV write_CP32(LPCSTR varname, LPSTR value)
'MBUS_SMS_Status CALLCONV write_EEPROM(WORD address, LPSTR write_buffer, BYTE length)
'MBUS_SMS_Status CALLCONV write_Float(LPCSTR varname, float value)
'MBUS_SMS_Status CALLCONV write_Memory(CString memtype, BYTE typebyte, WORD address, LPSTR write_buffer, BYTE length)
'MBUS_SMS_Status CALLCONV write_Memory(TVarMemType memtype, WORD address, LPSTR write_buffer, BYTE length)
'MBUS_SMS_Status CALLCONV write_RAM(WORD address, LPSTR write_buffer, BYTE length)
'MBUS_SMS_Status CALLCONV write_ULong(LPCSTR varname, ULONG value)
'MBUS_SMS_Status CALLCONV write_Var(LPCSTR varname, LPSTR write_buffer)
'MBUS_SMS_Status CALLCONV write_Var_Typed(CString vartype, LPCSTR varname, BYTE *value, long excpected_size)
'MBUS_SMS_Status CALLCONV write_Word(LPCSTR varname, WORD value)
'MBUS_SMS_Status DoAutoInit()
'MBUS_SMS_Status GetSendDataStatus(UINT code)
'MBUS_SMS_Status NormalSendData(UINT CI_Field, CString &sdat)
'MBUS_SMS_Status read_Memory(CString memtype, BYTE typebyte, WORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status read_Memory(TVarMemType memtype, WORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status read_Memory_LowLevel(CString memtype, BYTE typebyte, WORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status read_bigMemory(CString memtype, BYTE typebyte, DWORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status read_bigMemory(TVarMemType memtype, DWORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status read_bigMemory_LowLevel(CString memtype, BYTE typebyte, DWORD address, BYTE length, LPSTR receive_buffer, long buffer_size)
'MBUS_SMS_Status sendCI(UINT CI)
'SLAVEPARA slave_para_init;
'SLAVEPARA slave_para_temp;
'UINT init_repeat;
'UINT res;
'long CALLCONV get_var_adress(LPCSTR varname)
'long CALLCONV get_var_size(LPCSTR varname)
'static void wartezeit(UINT ms)
'static void wartezeit(UINT ms);
'void CALLCONV Init_MBUS_SMS()
'void CALLCONV SetAutoInit(BYTE autoinit)
'void CALLCONV SetDebugView(BOOL on)
'void CopyQB(QUADBYTE src, QUADBYTE &dest)
'void DebugOut(CString txt)
Public Function Errorstring(intErrorcode As Integer) As String
If intErrorcode = MBUS_SMS_ERR_OK Then Errorstring = "MBUS_SMS_ERR_OK"
If intErrorcode = 1 Then Errorstring = "MBUS_SMS_ERR_PORT_NOT_INITIALIZED"
If intErrorcode = 2 Then Errorstring = "MBUS_SMS_ERR_WRITECOMM_ERROR"
If intErrorcode = 3 Then Errorstring = "MBUS_SMS_ERR_TIMEOUT"
If intErrorcode = 4 Then Errorstring = "MBUS_SMS_ERR_PROT_CHECKSUM_ERROR"
If intErrorcode = 5 Then
Errorstring = "MBUS_SMS_ERR_ECHO_ONLY"
End If
If intErrorcode = 6 Then Errorstring = "MBUS_SMS_ERR_NO_ECHO"
If intErrorcode = 7 Then Errorstring = "MBUS_SMS_ERR_ASCIIHEX_TO_BIN_CONV_ERROR"
If intErrorcode = 8 Then Errorstring = "MBUS_SMS_ERR_ASSIGNMENT_CFIELD_CIFIELD"
If intErrorcode = 9 Then Errorstring = "MBUS_SMS_ERR_NO_RECEIVED_DATA_ASSIGNMENT"
If intErrorcode = 10 Then Errorstring = "MBUS_SMS_ERR_WRITECOMM_ABOVE_1024_CHARS"
If intErrorcode = 11 Then Errorstring = "MBUS_SMS_ERR_READCOMM_ABOVE_1024_CHARS"
If intErrorcode = 12 Then Errorstring = "MBUS_SMS_ERR_SETCOMMSTATE_SET_BAUDRATE"
If intErrorcode = 13 Then Errorstring = "MBUS_SMS_ERR_A_FIELD_TX_RX_DIFFERENCE"
If intErrorcode = 14 Then Errorstring = "MBUS_SMS_ERR_C_FIELD_VALUE_INVALID"
If intErrorcode = 15 Then Errorstring = "MBUS_SMS_ERR_OPENCOMM"
If intErrorcode = 16 Then Errorstring = "MBUS_SMS_ERR_BUILDCOMMDCB"
If intErrorcode = 17 Then Errorstring = "MBUS_SMS_ERR_SETCOMMSTATE"
If intErrorcode = 18 Then Errorstring = "MBUS_SMS_ERR_COMPORT_CANNOT_BE_CHANGED"
If intErrorcode = 19 Then Errorstring = "MBUS_SMS_ERR_CLOSEHANDLE"
If intErrorcode = 20 Then Errorstring = "MBUS_SMS_ERR_DELAYTIME_NO_BAUDRATE_SET"
If intErrorcode = 21 Then Errorstring = "MBUS_SMS_ERR_RECEIVE_BUFFER_TOO_SMALL"
If intErrorcode = 22 Then Errorstring = "MBUS_SMS_ERR_OPTO_ON"
If intErrorcode = 23 Then Errorstring = "MBUS_SMS_ERR_OPTO_OFF"
If intErrorcode = 24 Then Errorstring = "MBUS_SMS_ERR_OPTO_ERROR1"
If intErrorcode = 25 Then Errorstring = "MBUS_SMS_ERR_VARDEF_FILE_NOT_FOUND"
If intErrorcode = 26 Then Errorstring = "MBUS_SMS_ERR_CANNOT_LOAD_FILE"
If intErrorcode = 27 Then Errorstring = "MBUS_SMS_ERR_VARDEF_FILE_FIELD_COUNT_LOW"
If intErrorcode = 28 Then Errorstring = "MBUS_SMS_ERR_VARDEF_INVALID_VARIABLE_TYPE"
If intErrorcode = 29 Then Errorstring = "MBUS_SMS_ERR_VARDEF_INVALID_ADDRESS"
If intErrorcode = 30 Then Errorstring = "MBUS_SMS_ERR_VARDEF_INVALID_LENGTH"
If intErrorcode = 31 Then Errorstring = "MBUS_SMS_ERR_UNKNOWN_VARIABLE"
If intErrorcode = 32 Then Errorstring = "MBUS_SMS_ERR_RECEIVE_TELEGRAM_ERROR"
If intErrorcode = 33 Then Errorstring = "MBUS_SMS_ERR_VARIABLE_NOT_IN_CRC_SECTION"
If intErrorcode = 34 Then Errorstring = "MBUS_SMS_ERR_INVALID_CRC_SECTION_NAME"
If intErrorcode = 35 Then Errorstring = "MBUS_SMS_ERR_CRC_SECTION_INVALID_CHECKSUM"
If intErrorcode = 36 Then Errorstring = "MBUS_SMS_ERR_RESOURCE_ACCESS_ERROR"
If intErrorcode = 4095 Then Errorstring = "MBUS_SMS_ERR_UNKNOWN_ERROR"
End Function
Public Function WriteValueOhneWdh(ByRef Varname As String, ByVal value As Variant) As Long
Dim valbyte8 As Byte
Dim valint16 As Integer
Dim vallong32 As Long
Dim valdouble As Double
Dim valsingle As Single
Varname = LCase(Varname)
If Left(Varname, 2) = "u8" Then
valbyte8 = value
WriteValueOhneWdh = write_Byte(Varname, valbyte8)
Exit Function
End If
If Left(Varname, 3) = "u16" Then
If value > MAXINT_2 Then
valint16 = value - OFFSET_2
Else
valint16 = value
End If
WriteValueOhneWdh = write_Word(Varname, valint16)
Exit Function
End If
If Left(Varname, 3) = "u32" Then
If value > MAXINT_4 Then
vallong32 = value - OFFSET_4
Else
vallong32 = value
End If
WriteValueOhneWdh = write_ULong(Varname, vallong32)
Exit Function
End If
If Left(Varname, 3) = "i16" Then
valint16 = value
WriteValueOhneWdh = write_Word(Varname, valint16)
Exit Function
End If
If Left(Varname, 3) = "i32" Then
vallong32 = value
WriteValueOhneWdh = write_ULong(Varname, vallong32)
Exit Function
End If
If Left(Varname, 2) = "f_" And IsNumeric(value) Then
valsingle = CSng(value)
WriteValueOhneWdh = write_Float(Varname, valsingle)
Exit Function
End If
Exit Function:
Errorhandler:
WriteToLog "Fehler " & Err.Number & " in WriteValueOhneWdh('" & Varname & "') : " & Err.Description
End Function
' neu RH 23.11.2016
' Wrapper f<>r ReadValue, der diesen Befehl bis zu 3 mal wiederholt, wenn es einen Fehler d.h. einen R<>ckgabewert <> 0 gibt
Public Function ReadValue(ByRef Varname As String, ByRef value As Variant) As Integer
Dim intWdh As Integer
Dim strMsg As String
On Error GoTo Errorhandler
strMsg = ""
intWdh = 0
Do
ReadValue = ReadValueOhneWdh(Varname, value)
If ReadValue <> 0 Then
strMsg = "ReadValue(" & Varname & ") Fehler " & ReadValue & "=" & Errorstring(ReadValue) & ", Wdh=" & intWdh & "/3"
End If
intWdh = intWdh + 1
Loop While ReadValue <> 0 And intWdh <= 3
If strMsg <> "" Then
LogIntoDB strMsg, "FW2"
End If
Exit Function
Errorhandler:
LogIntoDB "Fehler " & Err.Number & " in ReadValue(" & Varname & "): " & Err.Description, "FW2"
End Function
' neu RH 23.11.2016
' Wrapper f<>r WriteValue, der diesen Befehl bis zu 3 mal wiederholt, wenn es einen Fehler, d.h. einen R<>ckgabewert <> 0 gibt
Public Function WriteValue(ByRef Varname As String, ByRef value As Variant) As Integer
Dim intWdh As Integer
Dim strMsg As String
On Error GoTo Errorhandler
strMsg = ""
intWdh = 0
Do
WriteValue = WriteValueOhneWdh(Varname, value)
If WriteValue <> 0 Then
strMsg = "WriteValue(" & Varname & "," & value & ") Fehler " & WriteValue & "=" & Errorstring(WriteValue) & ", Wdh=" & intWdh & "/3"
End If
intWdh = intWdh + 1
Loop While WriteValue <> 0 And intWdh <= 3
If strMsg <> "" Then
LogIntoDB strMsg, "FW2"
End If
Exit Function
Errorhandler:
LogIntoDB "Fehler " & Err.Number & " in WriteValue(" & Varname & ",...): " & Err.Description, "FW2"
End Function
' Lese eine FW2 Variable, Verzweigung in die typabh<62>ngigen Lesefunktionen je nach Variablentyp
' R<>ckgabewert -1 wenn Typ nicht bekannt
' sonst R<>ckgabewert = R<>ckgabewert aus Lesefunktion
Public Function ReadValueOhneWdh(ByRef Varname As String, ByRef value As Variant) As Integer
On Error GoTo Errorhandler
Dim errorcode As Long
Dim valbyte8 As Byte
Dim valint16 As Integer
Dim vallong32 As Long
Dim valdouble As Double
Dim valsingle As Single
Varname = LCase(Varname)
valbyte8 = 0
If Left(Varname, 2) = "u8" Then
ReadValueOhneWdh = read_Byte(Varname, valbyte8)
value = valbyte8
Exit Function
End If
If Left(Varname, 3) = "u16" Then
ReadValueOhneWdh = read_Word(Varname, valint16)
If valint16 < 0 Then
value = valint16 + OFFSET_2
Else
value = valint16
End If
Exit Function
End If
If Left(Varname, 3) = "u32" Then
ReadValueOhneWdh = read_ULong(Varname, vallong32)
If vallong32 < 0 Then
value = vallong32 + OFFSET_4
Else
value = vallong32
End If
Exit Function
End If
If Left(Varname, 3) = "i16" Then
ReadValueOhneWdh = read_Word(Varname, valint16)
value = valint16
Exit Function
End If
If Left(Varname, 3) = "i32" Then
ReadValueOhneWdh = read_ULong(Varname, vallong32)
value = vallong32
Exit Function
End If
If Left(Varname, 2) = "f_" Then
' single weil (read_Float Lib "MBUS_SMS.dll") auch single zur<75>ck gibt
ReadValueOhneWdh = read_Float(Varname, valsingle)
value = valsingle
Exit Function
End If
ReadValueOhneWdh = -1
WriteToLog "Unbekannter Typ der Variablen " & Varname
LogIntoDB "Unbekannter Typ der Variablen " & Varname, "FW2"
Exit Function
Errorhandler:
WriteToLog "Fehler " & Err.Number & " in ReadValueOhneWdh('" & Varname & "') : " & Err.Description
End Function
'UINT32 ReadValue(Char * varname, Float * value)
'{
'
' UINT32 errorcode=0;
' UINT8 val1=0;
' UINT16 val2=0;
' UINT32 val3=0;
' INT32 val5=0;
' float val4=0;
'
'
' wartezeit(DELAY_COM);
'
'
' if (strnicmp(varname,"U8",2)==0)
' {
' errorcode=pRead_Byte(varname,&val1);
' *value=(float) val1;
' return(errorcode);
' }
'
' if (strnicmp(varname,"U1",2)==0)
' {
' errorcode=pRead_Word(varname,&val2);
' *value=(float) val2;
' return(errorcode);
' }
'
' if (strnicmp(varname,"U3",2)==0)
' {
' errorcode=pRead_ULong(varname,&val3);
' *value=(float) val3;
' return(errorcode);
' }
'
' if (strnicmp(varname,"I1",2)==0)
' {
' errorcode=pRead_Word(varname,&val5);
' *value=(float) val5;
' return(errorcode);
' }
'
'
' if (strnicmp(varname,"I3",2)==0)
' {
' errorcode=pRead_ULong(varname,&val3);
' *value=(float) val3;
' return(errorcode);
' }
'
' if (strnicmp(varname,"F_",2)==0)
' {
' errorcode=pRead_Float(varname,&val4);
' *value =val4;
' return(errorcode);
' }
' return(errorcode);
'}
'
Public Function ScanPort(ByVal intPortNr As Integer) As Long
ScanPort = modMBUS_SMS.fw2_open_comport(intPortNr, 1, "", True)
If ScanPort > 0 Then
Exit Function
End If
ScanPort = modMBUS_SMS.SND_NKE()
If ScanPort <> 0 Then
Debug.Print "ScanPort Fehler " & ScanPort
Else
Debug.Print "ScanPort SND_NKE OK"
End If
IECCOM_CloseCom
End Function
Public Function SendNKE(intPortNr As Integer) As Integer
SendNKE = modMBUS_SMS.fw2_open_comport(intPortNr, 1, "", True)
If SendNKE <> 0 Then
Exit Function
End If
SendNKE = modMBUS_SMS.SND_NKE
Call IECCOM_CloseCom
End Function
Public Function GetFWGeneration(ByVal intPortNr As Integer, ByRef strFWGeneration As String) As Long
Dim sBuffer As String
GetFWGeneration = modMBUS_SMS.fw2_open_comport(intPortNr, 1, "", True)
If GetFWGeneration > 0 Then
Exit Function
End If
sBuffer = Space(250)
GetFWGeneration = modMBUS_SMS.REQ_UD2(sBuffer)
If GetFWGeneration = MBUS_SMS_ERR_OK Then
sBuffer = Trim(sBuffer)
' Debug.Print "000000000111111111122222222223"
' Debug.Print "123456789012345678901234567890"
' Debug.Print sBuffer
If Len(Trim(sBuffer)) > 1 Then
strFWGeneration = Mid(sBuffer, 13, 2)
Else
strFWGeneration = ""
End If
Else
Debug.Print modMBUS_SMS.Errorstring(CInt(GetFWGeneration))
End If
Call IECCOM_CloseCom
End Function
'
'/**
' -------------------------------------------------------------------------------
'
' @fn CloseComPort
'
' @brief schliessen der Schnittstelle am Ende oder beim Umschalten
'
' @return Fehlercode
'
' -------------------------------------------------------------------------------
' **/
'
'int close_comport(void)
'{
' return(pIECCOM_CloseCom());
'}
'
'static int open_comport(UINT portnr, UINT baudrate, UINT opto, char * mapfile)
Public Function fw2_open_comport(intPortNr As Integer, intBaudrate As Integer, strMapfile As String, Optional blnMitOptoHeader As Boolean = True, Optional kommunikations_repeats As Integer = 3) As Integer
On Error GoTo Errorhandler
Dim iReturncode As Integer
' int returncode=0;
' UINT16 bd=19200;
'
' // Display Taste muss f<>r Opto einmal gedr<64>ckt werden
'
' optoAktiv=FALSE;
gblnOptoAktiv = False
' if(opto && Testsystem)
' pressDisplayTaste( 1, 500); // Display Taste muss f<>r Opto einmal gedr<64>ckt werden
' pInit_MBUS_SMS();
Call Init_MBUS_SMS
' pSetDebugView(TRUE);
Call SetDebugView(True)
' pSetAutoInit(0);
Call SetAutoInit(0)
' if(!MapFileLoaded)
' {
' returncode=pLoadVarDef(MapFilePCE);
' MapFileLoaded=TRUE;
' if (returncode > 0)
' return returncode;
'
' }
If strMapfile <> "" Then
iReturncode = LoadVarDef(strMapfile)
gblnMapfileLoaded = True
If iReturncode <> 0 Then
fw2_open_comport = iReturncode
WriteToLog "Fehlercode LoadVarDef(" & strMapfile & ")=" & iReturncode
Exit Function
End If
End If
' returncode=pIECCOM_InitCom2(portnr, baudrate, 8, 2, 0);
' if (returncode > 0) return returncode;
' UINT ComPort; // Comport: 1=Com1, 2=Com2...
' UINT BaudRate; // Baudrate: 1....57600
' UINT ByteSize; // Datenbits 4-8
' UINT Parity; // Parity 0-4=none,odd,even,mark,space
' UINT StopBits; // StopBits 0,1,2 =1,1.5,2
' Folgendes geht nicht, aber wieso? Es gibt immer eine lange Wartezeit von 110 Sekunden und Reserve = 1245187
' DebugView bringt uns auch nicht weiter
'iReturncode = IECCOM_InitCom2(CInt(intPortNr) And 255, intBaudrate And 65535, 8, 2, 0)
' also wird nun Baudrate als Konstante codiert
iReturncode = IECCOM_InitCom2(CInt(intPortNr) And 255, 2400, 8, 2, 0)
If iReturncode > 0 Then
fw2_open_comport = iReturncode
WriteToLog "Fehlercode IECCOM_InitCom2(" & intPortNr & " and 255,2400,8,2,0)=" & iReturncode & ": " & Errorstring(iReturncode)
Exit Function
End If
' returncode= pIECCOM_InitSchicht2_2(0xFE, 50,600, kommunikations_repeats);
' if (returncode > 0) return returncode;
iReturncode = IECCOM_InitSchicht2_2(&HFE, 50, 600, kommunikations_repeats)
If (iReturncode > 0) Then
fw2_open_comport = iReturncode
WriteToLog "Fehlercode IECCOM_InitSchicht2_2(&HFE, 50, 600, " & kommunikations_repeats & ")=" & iReturncode
Exit Function
End If
' if(opto)
' {
' pIECCOM_SetKopfOn(800);
' pIECCOM_SwitchOpto(2); // OptoHeader <20>ber IECCOM
' pIECCOM_SelectOptoHeader(1);
' // pIECCOM_SendOptoHeader(); // macht die IEECOM32.DLL
' wartezeit(100);
' optoAktiv=TRUE;
'
' }
If blnMitOptoHeader Then
'Call IECCOM_SetKopfOn(800)
Call IECCOM_SwitchOpto(2)
Call IECCOM_SelectOptoHeader(1)
Sleep 100, False
gblnOptoAktiv = True
End If
' ist hier sowieso noch 0 sonst w<>r die Function schon fr<66>her beendet worden
fw2_open_comport = iReturncode
If (iReturncode > 0) Then
fw2_open_comport = iReturncode
WriteToLog "Fehlercode fw2_open_comport=" & iReturncode
Exit Function
End If
Exit Function
Errorhandler:
fw2_open_comport = Err.Number
g_strErrorDesc = Err.Description
End Function
Public Function GetNowaVolume(ByRef dblResult As Double) As Long
Dim lngReturn As Long
Dim strResult As String
Dim bytScaling As Byte
GetNowaVolume = read_Byte("u8_scaling", bytScaling)
If lngReturn <> 0 Then
GetNowaVolume = lngReturn
Exit Function
Else
Dim sngWert As Single
lngReturn = read_Float("f_nowa_volume", sngWert)
dblResult = CDbl(sngWert)
GetNowaVolume = lngReturn
If lngReturn = 0 Then
Select Case bytScaling
Case 0:
Case 1: dblResult = dblResult * 10
Case 2: dblResult = dblResult * 100
Case 3: dblResult = dblResult * 1000
Case Else
GetNowaVolume = -80 ' unkbown scaling
Exit Function
End Select
End If
End If
End Function
Public Function WarteAufOpto(EinbauplatzNr As Integer, Optional parenForm As Form) As Boolean
Dim objForm As frmUSFW2WarteAufOpto
Set objForm = New frmUSFW2WarteAufOpto
objForm.m_COMPort = Val(g_App.Settings.getUSComPort(EinbauplatzNr))
If objForm.m_COMPort > 0 Then
objForm.mstrText = "Keine Verbindung zum Rechenwerk an Einbauplatz " & EinbauplatzNr & ". Bitte roten Knopf dr<64>cken!"
objForm.m_iEinbauplatzNr = EinbauplatzNr
objForm.Show vbModal, parenForm
WarteAufOpto = objForm.mbln_Erfolg
End If
End Function
'Public Function FW2_ReadMemory(intPortNr As Integer) As Long
' FW2_ReadMemory = modMBUS_SMS.fw2_open_comport(intPortNr, 1, "", True)
' If FW2_ReadMemory <> MBUS_SMS_ERR_OK Then
' Exit Function
' End If
'
' Dim lngbufferlen As Long
' Dim ret As Integer
' Dim strBuffer As String
' Dim i As Long
'
' ret = read_EEPROM(0, 255, strBuffer, lngbufferlen)
' Debug.Print strBuffer
'
' Call IECCOM_CloseCom
'End Function