Goodmorning everyone,
This morning i was coding a Select Case statement with many conditions.
The statement is based on "True" condition
I got this error back:
I really don't understand why the error comes out.
This is the sub with the Select Case statemant:
This morning i was coding a Select Case statement with many conditions.
The statement is based on "True" condition
I got this error back:
I really don't understand why the error comes out.
This is the sub with the Select Case statemant:
B4X:
Sub RegistraEvento(Event() As Byte) As Object
Dim NumDay As Byte, vDay As Byte, vMonth As Byte, vYear As Byte
Dim vHour As Byte, vMin As Byte, vSec As Byte
Dim vEv(4) As Byte, vState(4) As Double, vStato As Double, StrStato As String
NumDay = Bit.ShiftRight(Event(0), 5)
vDay = Bit.And(Event(0), 0x1F)
vMonth = Bit.ShiftRight(Event(1), 4)
vYear = Bit.Or(Bit.And(Bit.shiftleft(Event(1), 3), 0x78), Bit.ShiftRight(Event(2), 5))
vHour = Bit.And(Event(2), 0x1F)
vMin = Bit.ShiftRight(Event(3), 2)
vSec = Bit.Or((Bit.And(Bit.ShiftLeft(Event(3),4), 0x30)) , Bit.ShiftRight(Event(4) , 4))
vEv(0) = Event(5)'Asc(Strings.Mid2(strEvent, 6, 1))
vEv(1) = Event(6)
vEv(2) = Event(7)
vEv(3) = Bit.And(Event(4), 0xF)
vStato = numfnc.DWord2Num2(Array(Event(8), Event(9), Event(10), Event(11)), False)
Dim cmdValue As Byte = vEv(0)
Dim EvString As String = CodeStringMap.Get(600 + cmdValue)
Select True
Case cmdValue = MEMO_CODICE_VARIAZIONE_STATO
Dim indexCode As Int = CodeIndex(vEv(1), vEv(2))
EvString = GetString(EvString, Array(mapCodici.Get(indexCode), DisplayState(vStato)))
' 'NewEvento.Tipo = 1
Case cmdValue = MEMO_ALLARME_LINEE_CENTRALE
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1), (vEv(2) / 10), DisplayState(vStato)))
Case cmdValue = MEMO_ALLARME_LINEE_XESP
EvString = GetString(EvString, Array((vEv(1) + 1), mapIngressi.Get(vEv(3) +1), (vEv(2) / 10), DisplayState(vStato)))
Case cmdValue = MEMO_ALLARME_TAMPER_TERMINALI Or cmdValue = MEMO_ALLARME_GUASTO_TERMINALI
EvString = GetString(EvString, Array(vEv(1) + 1))
Case cmdValue = MEMO_ALLARME_GUASTO_XESP
EvString = GetString(EvString, Array(vEv(1) + 1))
Case cmdValue = MEMO_ALLARME_GUASTO_XSEU
EvString = GetString(EvString, Array(vEv(1) + 1))
'Case MEMO_ALLARME_GUASTO_MODEM
'Case MEMO_ALLARME_CODICE_FALSO
Case cmdValue = Or cmdValue = MEMO_DIGITAZIONE_CODICE_ERRATO_PC Or cmdValue = MEMO_MODEM_CODICE_ERRATO
EvString = GetString(EvString, Array("CodiceErrato"))
Case cmdValue >= MEMO_INSUFFICIENZA_RETE And cmdValue <= MEMO_FINE_TEST_BATTERIE_XC2000
EvString = GetString(EvString, Array(vEv(1) / 10))
Case cmdValue = MEMO_DIGITAZIONE_CODICE
EvString = GetString(EvString, Array((vStato + 1), (vEv(1) + 1)))
Case cmdValue = MEMO_TIMER_VARIAZIONE_STATO
EvString = GetString(EvString, Array(DisplayState(vStato)))
Case cmdValue = MEMO_CHIAVE_VARIAZIONE_STATO
EvString = GetString(EvString, Array(DisplayState(vStato)))
Case cmdValue = MEMO_MODEM_VARIAZIONE_STATO
Dim indexCode As Int = CodeIndex(vEv(1), vEv(2))
EvString = GetString(EvString, Array(mapCodici.Get(indexCode), DisplayState(vStato)))
Case cmdValue >= MEMO_ALLARME_TAMPER_LINEE_CENTRALE And cmdValue <= MEMO_IMPULSO_LINEE_CENTRALE
'EvString = GetString(EvString, Array((vEv(1) + 1), (vEv(2) / 10), DisplayState(vStato)))
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1), (vEv(2) / 10), DisplayState(vStato)))
Case cmdValue = MEMO_GRUPPI_AUTOMATICI_VARIAZIONE
EvString = GetString(EvString, Array(DisplayState(vStato)))
Case cmdValue >= MEMO_SOVRATENSIONE_RETE And cmdValue <= MEMO_RESTORE_FUSIBILE_RS485
EvString = GetString(EvString, Array(vEv(1) / 10))
Case cmdValue = MEMO_DIGITAZIONE_CODICE_FUORI_ORARIO
EvString = GetString(EvString, Array(mapCodici.Get(vStato + 1), (vEv(1) + 1)))
Case cmdValue = MEMO_DIGITAZIONE_CODICE_COMANDO_USCITE
Dim tmp As String
If vEv(2) = 0 Then
tmp = "OFF"
Else
tmp = "ON"
End If
EvString = GetString(EvString, Array(mapCodici.Get(Bit.And(vStato, 65535)), Bit.And(vStato, 4294901760.0), tmp, (vEv(1) + 1)))
Case cmdValue = MEMO_START_TEST_BATTERIE_XESP
EvString = GetString(EvString, Array((vEv(1) + 1), (vEv(2) / 10)))
Case cmdValue = MEMO_STOP_TEST_BATTERIE_XESP
EvString = GetString(EvString, Array((vEv(1)), (vEv(2) / 10), (vStato)))
Case cmdValue = MEMO_ALLARME_GRUPPO
Dim str As StringFunctions
str.Initialize
EvString = GetString(EvString, Array(str.mid(Settori, vEv(1), 1)))
Case cmdValue = MEMO_ADATTAMENTO_ORA_LEGALE
Dim tmp As String
If vEv(1) = 0 Then
tmp = "OFF"
Else
tmp = "ON"
End If
EvString = GetString(EvString, Array(tmp))
Case cmdValue >= MEMO_ALLARME_TAMPER_LINEE_XESP And cmdValue <= MEMO_ALLARME_TAMPER_LINEE_XESP_PROVA
EvString = GetString(EvString, Array(Bit.And(vEv(3), 15), vEv(1), DisplayState(vStato)))
Case cmdValue >= MEMO_INSUFFICIENZA_RETE_XESP And cmdValue <= MEMO_RESTORE_FUSIBILE_RIVELATORI_XESP
EvString = GetString(EvString, Array(vEv(1), vEv(2) / 10))
Case cmdValue = MEMO_FALLITO_TEST_BATTERIE_XC2000
EvString = GetString(EvString, Array(vEv(1) / 10))
Case cmdValue = MEMO_FALLITO_TEST_BATTERIE_XESP
EvString = GetString(EvString, Array(vEv(1), vEv(2) / 10))
Case cmdValue = MEMO_IMPULSO_LINEA_XESP
EvString = GetString(EvString, Array(Bit.And(vEv(3), 15), vEv(1), DisplayState(vStato)))
Case cmdValue = MEMO_ALLARME_CORTOCIRCUITO_LINEE_CENTRALE Or cmdValue = MEMO_ALLARME_CORTOCIRCUITO_LINEE_CENTRALE_PROVA
EvString = GetString(EvString, Array(vEv(1), DisplayState(vStato)))
Case cmdValue = MEMO_ALLARME_CORTOCIRCUITO_LINEE_XESP Or cmdValue = MEMO_ALLARME_CORTOCIRCUITO_LINEE_XESP_PROVA
EvString = GetString(EvString, Array(Bit.And(vEv(3), 15), vEv(1), DisplayState(vStato)))
Case cmdValue = MEMO_DIGITAZIONE_CODICE_PROGRAMMAZIONE
EvString = GetString(EvString, Array(mapCodici.Get(vStato + 1), (vEv(1) + 1)))
Case cmdValue = MEMO_CODICE_DIRETTO_VARIAZIONE_STATO
Dim tmp As String
If vStato = 0 Then
tmp = "OFF"
Else
tmp = "ON"
End If
EvString = GetString(EvString, Array(mapCodici.Get(CodeIndex(vEv(1), vEv(2))), vEv(3), tmp))
Case cmdValue = MEMO_MODEM_CODICE_ESCLUSIONI
EvString = GetString(EvString, Array(mapCodici.Get(vStato + 1)))
'Case MEMO_DIGITAZIONE_CODICE_ERRATO_XMANAGER
'Case MEMO_PROXY_ERRATA
'Case MEMO_REGISTRAZIONE_CARD
Case cmdValue = MEMO_AUTORIATTIVAZIONE_SETTORI
EvString = GetString(EvString, Array(DisplayState(vStato)))
' NewEvento.Tipo = 1
Case cmdValue = MEMO_RIPRISTINO_LINEE_CENTRALE
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1), DisplayState(vStato)))
Case cmdValue = MEMO_RIPRISTINO_LINEE_XESP
EvString = GetString(EvString, Array(Bit.And(vEv(3), 15), vEv(1), DisplayState(vStato)))
Case cmdValue = MEMO_TACITAZIONE_ALLARMI
EvString = GetString(EvString, Array(mapCodici.Get(vStato), vEv(1)))
'Case MEMO_TACITAZIONE_ALLARMI_XMANAGER
Case cmdValue = MEMO_TACITAZIONE_ALLARMI_MODEM
EvString = GetString(EvString, Array(vStato))
'Case MEMO_XINFOCEL_SOPRAVVIVENZA
' Non necessario
Case cmdValue = MEMO_XINFOCEL_CODICI_FALSI_REMOTE Or cmdValue = MEMO_XINFOCEL_RAPINA
EvString = GetString(EvString, Array("nonumber"))'GetTelephoneNumber(vEv(1), vEv(2), vEv(3), vStato))
'Case MEMO_XINFOCEL_PREPAGATA
' Non necessario
'Case MEMO_XINFOCEL_LOW_SIGNAL
' Non necessario
'Case MEMO_XINFOCEL_GSM_FAULT
' Non necessario
Case cmdValue = MEMO_RADIO_CRYPTO_VARIAZIONE_STATO
EvString = GetString(EvString, Array(vEv(2), DisplayState(vStato)))
' NewEvento.Tipo = 1
Case cmdValue = MEMO_RADIO_CRYPTO_DIRETTO_VARIAZIONE_STATO
Dim tmp As String
If vStato = 0 Then
tmp = "OFF"
Else
tmp = "ON"
End If
EvString = GetString(EvString, Array(vEv(2), tmp))
'NewEvento.Tipo = 1
Case cmdValue = MEMO_GUASTO_BATTERIA_SIRENA Or cmdValue = MEMO_GUASTO_FUSIBILE_SIRENA Or cmdValue = MEMO_INIZIO_TEST_BATTERIA_SIRENA Or cmdValue = MEMO_FINE_TEST_BATTERIA_SIRENA
EvString = GetString(EvString, Array(vEv(1), vEv(2) / 10))
Case cmdValue = MEMO_GUASTO_COMUNICAZIONE_SIRENA Or cmdValue = MEMO_GUASTO_ALTOPARLANTE_SIRENA Or cmdValue = MEMO_ALLARME_TAMPER_SIRENA Or cmdValue = MEMO_RIVELAZIONE_PROXY_SIRENA
EvString = GetString(EvString, Array( vEv(1)))
Case cmdValue = MEMO_ATTIVAZIONE_RAPIDA_TOTALE Or cmdValue = MEMO_ATTIVAZIONE_RAPIDA_PARZIALE Or cmdValue = MEMO_ATTIVAZIONE_RAPIDA_VISION
EvString = GetString(EvString, Array(vEv(3), DisplayState(vStato)))
'NewEvento.Tipo = 1
Case cmdValue = MEMO_RAPINA_VISION
EvString = GetString(EvString, Array(vEv(2)))
Case cmdValue = MEMO_THERMOPOINT_MINIMA Or cmdValue = MEMO_THERMOPOINT_MASSIMA
EvString = GetString(EvString, Array(vEv(1), vEv(2)))
'Case MEMO_CODICE_COMANDO_PORTA
Case cmdValue = MEMO_POWERCONTROLLER_OVERCURRENT
EvString = GetString(EvString, Array(vEv(3)))
Case cmdValue = MEMO_ALLARME_LINEE_CENTRALE_C1
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1)))
'If GestioneEvento Then frmMain.Allarme(Centrale, vEv(1), TYPE_LINE_WLINK)
Case cmdValue = MEMO_ALLARME_LINEE_CENTRALE_C2
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1)))
'If GestioneEvento Then frmMain.Allarme(Centrale, vEv(1), TYPE_LINE_WLINK)
Case cmdValue = MEMO_ALLARME_LINEE_CENTRALE_MEMS_REMOVAL
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1)))
' If GestioneEvento Then frmMain.Allarme(Centrale, vEv(1), TYPE_LINE_WLINK)
Case cmdValue = MEMO_ALLARME_LINEE_CENTRALE_MEMS_VIBRO
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1)))
' If GestioneEvento Then frmMain.Allarme(Centrale, vEv(1), TYPE_LINE_WLINK)
Case cmdValue = MEMO_ALLARME_LINEE_CENTRALE_MASKING
EvString = GetString(EvString, Array(mapIngressi.Get(vEv(1) +1)))
Case cmdValue = MEMO_ALLARME_TAMPER_SIRENA_WLINK
EvString = GetString(EvString, Array(vEv(1) + 1))
Case cmdValue = MEMO_GUASTO_BATTERIA_SIRENA_WLINK
EvString = GetString(EvString, Array(vEv(1) + 1))
Case cmdValue = MEMO_GUASTO_SUPERVISIONE_SIRENA_WLINK
EvString = GetString(EvString, Array(vEv(1) + 1))
Case cmdValue = MEMO_ALLARME_CANALE
EvString = GetString(EvString, Array(mapCanali.Get(vEv(1) +1)))
'If GestioneEvento Then frmMain.Allarme(Centrale, vEv(1), TYPE_LINE_WLINK)
Case cmdValue = MEMO_ALLARME_TAMPER_CANALE
EvString = GetString(EvString, Array(mapCanali.Get(vEv(1) +1)))
End Select
Dim nDay, day, month, year, hour, mins As String
nDay= days(NumDay)
day = vDay
If vDay<10 Then day = "0" & vDay
month = vMonth
If vMonth<10 Then month = "0" & vMonth
year = 2000 + vYear
hour = vHour
mins = vMin
If vMin<10 Then mins = "0" & vMin
Dim dateString As String
dateString = nDay & " " & day & "/"& month & "/" & year & " " & hour & ":" & mins
Return Array(dateString, EvString)
End Sub