DIGITALMULTIMETER VC 840 über Serielle Schnittstelle auslese
Verfasst: 04.03.2007 12:00
Hallo Leute !
Hab mal probiert das DIGITALMULTIMETER VC 840 von Conrad Elektronik über die serielle Schnittstelle auszulesen.
Vielleicht kann es wer brauchen ?
Lg.
Legion

Hab mal probiert das DIGITALMULTIMETER VC 840 von Conrad Elektronik über die serielle Schnittstelle auszulesen.
Vielleicht kann es wer brauchen ?
Lg.
Legion

Code: Alles auswählen
#Zahl0 = "1111101"
#Zahl1 = "0000101"
#Zahl2 = "1011011"
#Zahl3 = "0011111"
#Zahl4 = "0100111"
#Zahl5 = "0111110"
#Zahl6 = "1111110"
#Zahl7 = "0010101"
#Zahl8 = "1111111"
#Zahl9 = "0111111"
;-------------------------------------------------------------------------------------------------------------
Global HCom
Global *MyBuffer2 = AllocateMemory(255)
Global ByteString.s = "1234567890ABCD"
Global MessZyklus = 250
Global ErsteZahlvonRecht.s,ZweiteZahlvonRechts .s,DritteZahlvonRechts.s,VierteZahlvonRechts.s
;-------------------------------------------------------------------------------------------------------------
Procedure ReadDataCom()
ComRead(Hcom,*MyBuffer2,ComInputBufferCount(Hcom))
ByteString = PeekS(*MyBuffer2)
EndProcedure
;-------------------------------------------------------------------------------------------------------------
Procedure.s ZahlenDecodieren()
Protected Result.s
ReciveBytes.s = ""
BinData.s = ""
For u = 0 To 13
ReciveBytes = ReciveBytes + Right("00" + Hex(PeekB(@ByteString + u)),2)+ " "
BinData = BinData + Right("0000" + Bin(PeekB(@ByteString + u)),4)
Next u
If Mid(BinData, 30, 7) = #Zahl0 : ErsteZahlvonRecht = "0" : EndIf
If Mid(BinData, 30, 7) = #Zahl1 : ErsteZahlvonRecht = "1" : EndIf
If Mid(BinData, 30, 7) = #Zahl2 : ErsteZahlvonRecht = "2" : EndIf
If Mid(BinData, 30, 7) = #Zahl3 : ErsteZahlvonRecht = "3" : EndIf
If Mid(BinData, 30, 7) = #Zahl4 : ErsteZahlvonRecht = "4" : EndIf
If Mid(BinData, 30, 7) = #Zahl5 : ErsteZahlvonRecht = "5" : EndIf
If Mid(BinData, 30, 7) = #Zahl6 : ErsteZahlvonRecht = "6" : EndIf
If Mid(BinData, 30, 7) = #Zahl7 : ErsteZahlvonRecht = "7" : EndIf
If Mid(BinData, 30, 7) = #Zahl8 : ErsteZahlvonRecht = "8" : EndIf
If Mid(BinData, 30, 7) = #Zahl9 : ErsteZahlvonRecht = "9" : EndIf
If Mid(BinData, 22, 7) = #Zahl0 : ZweiteZahlvonRechts = "0" : EndIf
If Mid(BinData, 22, 7) = #Zahl1 : ZweiteZahlvonRechts = "1" : EndIf
If Mid(BinData, 22, 7) = #Zahl2 : ZweiteZahlvonRechts = "2" : EndIf
If Mid(BinData, 22, 7) = #Zahl3 : ZweiteZahlvonRechts = "3" : EndIf
If Mid(BinData, 22, 7) = #Zahl4 : ZweiteZahlvonRechts = "4" : EndIf
If Mid(BinData, 22, 7) = #Zahl5 : ZweiteZahlvonRechts = "5" : EndIf
If Mid(BinData, 22, 7) = #Zahl6 : ZweiteZahlvonRechts = "6" : EndIf
If Mid(BinData, 22, 7) = #Zahl7 : ZweiteZahlvonRechts = "7" : EndIf
If Mid(BinData, 22, 7) = #Zahl8 : ZweiteZahlvonRechts = "8" : EndIf
If Mid(BinData, 22, 7) = #Zahl9 : ZweiteZahlvonRechts = "9" : EndIf
If Mid(BinData, 14, 7) = #Zahl0 : DritteZahlvonRechts = "0" : EndIf
If Mid(BinData, 14, 7) = #Zahl1 : DritteZahlvonRechts = "1" : EndIf
If Mid(BinData, 14, 7) = #Zahl2 : DritteZahlvonRechts = "2" : EndIf
If Mid(BinData, 14, 7) = #Zahl3 : DritteZahlvonRechts = "3" : EndIf
If Mid(BinData, 14, 7) = #Zahl4 : DritteZahlvonRechts = "4" : EndIf
If Mid(BinData, 14, 7) = #Zahl5 : DritteZahlvonRechts = "5" : EndIf
If Mid(BinData, 14, 7) = #Zahl6 : DritteZahlvonRechts = "6" : EndIf
If Mid(BinData, 14, 7) = #Zahl7 : DritteZahlvonRechts = "7" : EndIf
If Mid(BinData, 14, 7) = #Zahl8 : DritteZahlvonRechts = "8" : EndIf
If Mid(BinData, 14, 7) = #Zahl9 : DritteZahlvonRechts = "9" : EndIf
If Mid(BinData, 6, 7) = #Zahl0 : VierteZahlvonRechts = "0" : EndIf
If Mid(BinData, 6, 7) = #Zahl1 : VierteZahlvonRechts = "1" : EndIf
If Mid(BinData, 6, 7) = #Zahl2 : VierteZahlvonRechts = "2" : EndIf
If Mid(BinData, 6, 7) = #Zahl3 : VierteZahlvonRechts = "3" : EndIf
If Mid(BinData, 6, 7) = #Zahl4 : VierteZahlvonRechts = "4" : EndIf
If Mid(BinData, 6, 7) = #Zahl5 : VierteZahlvonRechts = "5" : EndIf
If Mid(BinData, 6, 7) = #Zahl6 : VierteZahlvonRechts = "6" : EndIf
If Mid(BinData, 6, 7) = #Zahl7 : VierteZahlvonRechts = "7" : EndIf
If Mid(BinData, 6, 7) = #Zahl8 : VierteZahlvonRechts = "8" : EndIf
If Mid(BinData, 6, 7) = #Zahl9 : VierteZahlvonRechts = "9" : EndIf
;-------------------------------------------------------------------------------------------------------------
;Trennzeichen decodieren
If Mid(BinData, 13, 1) = "1" : Tausendertrennzeichen.s = "."
Else
Tausendertrennzeichen.s = ""
EndIf
If Mid(BinData, 21, 1) = "1" : Hundertertrennzeichen.s = "."
Else
Hundertertrennzeichen = ""
EndIf
If Mid(BinData, 29, 1) = "1" : Zehnertrennzeichen.s = "."
Else
Zehnertrennzeichen = ""
EndIf
;-------------------------------------------------------------------------------------------------------------
If Mid(BinData, 5, 1) = "1" : Minuszeichen.s = "-"
Else
Minuszeichen = ""
EndIf
;-------------------------------------------------------------------------------------------------------------
Result.s = Minuszeichen+VierteZahlvonRechts+Tausendertrennzeichen+DritteZahlvonRechts+Hundertertrennzeichen+ZweiteZahlvonRechts+Zehnertrennzeichen+ErsteZahlvonRecht
ProcedureReturn Result
EndProcedure
HCom = ComOpen("Com2: baud=2400 parity=N data=8 stop=1",0,255,255)
StartTimer(MyTimer1,MessZyklus,@ReadDataCom())
For i= 1 To 100
Debug ValD(ZahlenDecodieren())
Delay(250)
Next i
EndTimer(MyTimer1)
ComClose(hCom)
FreeMemory(*MyBuffer2)