Initial commit 3
This commit is contained in:
@@ -0,0 +1,245 @@
|
||||
VERSION 1.0 CLASS
|
||||
BEGIN
|
||||
MultiUse = -1 'True
|
||||
Persistable = 0 'NotPersistable
|
||||
DataBindingBehavior = 0 'vbNone
|
||||
DataSourceBehavior = 0 'vbNone
|
||||
MTSTransactionMode = 0 'NotAnMTSObject
|
||||
END
|
||||
Attribute VB_Name = "CFM85P"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = True
|
||||
Attribute VB_PredeclaredId = False
|
||||
Attribute VB_Exposed = False
|
||||
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
|
||||
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
|
||||
'==============================================================================
|
||||
'
|
||||
' File : CFM85P
|
||||
' Author : Andreas Schmidt
|
||||
' Date : 27.01.1999
|
||||
' Version: 0.01
|
||||
'
|
||||
'==============================================================================
|
||||
'
|
||||
' History:
|
||||
'
|
||||
' Author : Andreas Schmidt
|
||||
' Date : 27.01.1999
|
||||
' Version: 0.01
|
||||
'
|
||||
' Erste Version mit rh.
|
||||
'
|
||||
'==============================================================================
|
||||
|
||||
Option Explicit
|
||||
|
||||
' Parent jedes FM85P-Objekts ist der CFMBus
|
||||
Private m_FMBus As CFMBus
|
||||
|
||||
' Adresse dieses FM85P im FM-BUS
|
||||
Private m_Address As Integer
|
||||
|
||||
' Letzter Fehlercode des FM85P
|
||||
Private m_nError As Integer
|
||||
|
||||
' Letzte Antwort des FM85P
|
||||
Private m_sAnswer
|
||||
|
||||
' Maximale Wartezeit auf eine Antwort
|
||||
Const DEFAULT_TIMEOUT = 1100
|
||||
|
||||
'
|
||||
' FM85P neu initialisieren, evtl. gespeicherten Fehlercode
|
||||
' zurücksetzen etc.
|
||||
'
|
||||
Public Function Reset()
|
||||
' TODO: FM ansprechen, resetten. Nur true zurückgeben,
|
||||
' wenn hardware-reset erfolgreich war
|
||||
|
||||
clearStateMembers
|
||||
|
||||
Reset = True
|
||||
End Function
|
||||
|
||||
'
|
||||
' Objektmember, die über den Zustand der letzten
|
||||
' Kommunikation Auskunft geben, zurücksetzen.
|
||||
'
|
||||
Private Sub clearStateMembers()
|
||||
m_nError = 0
|
||||
m_sAnswer = ""
|
||||
End Sub
|
||||
|
||||
|
||||
'
|
||||
' @param FMBus Bus, dem der FM85P zugeordnet ist
|
||||
'
|
||||
Public Sub setFMBus(FMBus As CFMBus)
|
||||
Set m_FMBus = FMBus
|
||||
End Sub
|
||||
|
||||
|
||||
'
|
||||
' @param nAdresse Adresse des FM85P im Bus
|
||||
'
|
||||
Public Sub setAdress(nAdress As Integer)
|
||||
m_Address = nAdress
|
||||
End Sub
|
||||
|
||||
'
|
||||
' @return Adresse des FM85P
|
||||
'
|
||||
Public Function getAdress() As Integer
|
||||
getAdress = m_Address
|
||||
End Function
|
||||
|
||||
'
|
||||
' Liegt ein Fehler vor?
|
||||
'
|
||||
' @return true = Fehler liegt vor, Fehlerbeschreibung kann
|
||||
' mit getErrorCode/getErrorDesc eingeholt
|
||||
' werden
|
||||
' false = alles OK
|
||||
'
|
||||
Public Function hasError() As Boolean
|
||||
hasError = (m_nError <> 0)
|
||||
End Function
|
||||
|
||||
'
|
||||
' @return Interner Code des letzten Fehlers
|
||||
' (siehe modFM85P.bas)
|
||||
'
|
||||
Public Function getErrorCode() As Integer
|
||||
getErrorCode = m_nError
|
||||
End Function
|
||||
|
||||
'
|
||||
' @return Erläuterung zu dem letzten Fehler
|
||||
'
|
||||
Public Function getErrorDesc() As String
|
||||
Select Case m_nError
|
||||
Case FM85P_ERR_TIMEOUT:
|
||||
getErrorDesc = FM85P_ERR_TIMEOUT_D
|
||||
Case FM85P_ERR_UNKNOWNANSWER:
|
||||
getErrorDesc = FM85P_ERR_UNKNOWNANSWER_D + " (" + m_sAnswer + ")"
|
||||
Case FM85P_ERR_NOANSWER:
|
||||
getErrorDesc = FM85P_ERR_NOANSWER_D
|
||||
Case FM85P_ERR_BUS:
|
||||
getErrorDesc = FM85P_ERR_BUS_D
|
||||
Case Default
|
||||
getErrorDesc = ""
|
||||
End Select
|
||||
End Function
|
||||
|
||||
'
|
||||
' FM85P ansprechen
|
||||
'
|
||||
' @return true = OK,
|
||||
' false = Fehler beim Senden oder keine Antwort erhalten
|
||||
'
|
||||
Public Function sendAttention() As Boolean
|
||||
Dim nAddress As Integer
|
||||
clearStateMembers
|
||||
nAddress = getAdress()
|
||||
|
||||
If nAddress = 0 Then
|
||||
Stop
|
||||
End If
|
||||
|
||||
|
||||
If Not m_FMBus.send("**" & nAddress & "@") Then
|
||||
m_nError = FM85P_ERR_BUS
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
' zuletzt angesprochenen Zähler merken
|
||||
m_FMBus.SetLastFM (nAddress)
|
||||
|
||||
|
||||
m_sAnswer = m_FMBus.receive(DEFAULT_TIMEOUT)
|
||||
|
||||
If m_FMBus.getErrorCode() <> 0 Then
|
||||
m_nError = FM85P_ERR_BUS
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
If Left$(m_sAnswer, 6) = "*FM85P" Or Left$(m_sAnswer, 7) = "*FM2014" Then
|
||||
sendAttention = True
|
||||
ElseIf Left$(m_sAnswer, 8) = " TIMEOUT" Then
|
||||
m_nError = FM85P_ERR_TIMEOUT
|
||||
ElseIf InStr(1, m_sAnswer, Hex(nAddress)) > 0 Then
|
||||
sendAttention = True
|
||||
ElseIf m_sAnswer <> "" Then
|
||||
m_nError = FM85P_ERR_UNKNOWNANSWER
|
||||
Else
|
||||
m_nError = FM85P_ERR_NOANSWER
|
||||
End If
|
||||
End Function
|
||||
|
||||
'
|
||||
'Daten an FM85P senden
|
||||
'
|
||||
'@return true = OK,
|
||||
' false = Fehler beim Senden
|
||||
'
|
||||
Public Function send(data As String) As Boolean
|
||||
send = True
|
||||
Dim nAddress As Integer
|
||||
|
||||
If m_Address <> m_FMBus.GetLastFM Then
|
||||
' Todo:
|
||||
If sendAttention() Then
|
||||
Else
|
||||
End If
|
||||
End If
|
||||
|
||||
clearStateMembers
|
||||
If Not m_FMBus.send(data) Then
|
||||
m_nError = FM85P_ERR_BUS
|
||||
send = False
|
||||
Exit Function
|
||||
End If
|
||||
End Function
|
||||
|
||||
'
|
||||
' @return letzte Antwort des FM85P
|
||||
'
|
||||
Public Function getLastAnswer()
|
||||
getLastAnswer = m_sAnswer
|
||||
End Function
|
||||
|
||||
'
|
||||
'
|
||||
' @ return true = OK
|
||||
' false = keine Antwort oder Timeout bekommen
|
||||
'
|
||||
Public Function receive()
|
||||
m_sAnswer = m_FMBus.receive(DEFAULT_TIMEOUT)
|
||||
If m_FMBus.getErrorCode() <> 0 Then
|
||||
m_nError = FM85P_ERR_BUS
|
||||
Exit Function
|
||||
End If
|
||||
If Left$(m_sAnswer, 8) = " TIMEOUT" Then
|
||||
m_nError = FM85P_ERR_TIMEOUT
|
||||
Exit Function
|
||||
Else
|
||||
If m_sAnswer = "" Then
|
||||
m_nError = FM85P_ERR_NOANSWER
|
||||
Exit Function
|
||||
Else
|
||||
receive = True
|
||||
End If
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
' sendet einen String zum FM85 und gibt die Antwort zurück
|
||||
Public Function dialog(data)
|
||||
send (data)
|
||||
If receive() Then
|
||||
dialog = getLastAnswer()
|
||||
Else
|
||||
dialog = ""
|
||||
End If
|
||||
End Function
|
||||
Reference in New Issue
Block a user