rs232 Multimeter ds4000 zc

  • VB6

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von fraju.

    rs232 Multimeter ds4000 zc

    Hi ich muss gleich vorweg sagen das ich keinen schimmer von Virtual Basic habe (= , ich besitze ein Messgerät namens Digitek dt 4000 zc
    LINK: elv.de/output/controller.aspx?cid=74&detail=10&detail2=7664
    das messgerät kann über die rs232 schnittstelle mit dem PC komminzieren,

    Leider gibt es keine Software im Netzt die meinen anforderungen endspricht...
    Jetzt möchte ich gern mit vb 6 ein kleines programm schreiben mit den ich ich gemessenen werte in eine logfiel schreiben kann (Log.txt)

    xx.xx
    xx.xx
    xx.xx
    xx.xx

    das format sollte so aussehen, dabei sollte keine einheit in die logfiel geschreiben werden
    das ganze brauche ich nur für den messbereich Themperaturmessung .... °C
    die anderen messbereiche können daher wegfallen .....

    ich habe jetzt im netzt schon eine vb 5 Projektdatei gefunden, diese ist sogar sehr gut dokumentiert
    LINK: franksteinberg.de/ZIPS/DT_VB5.ZIP

    jetzt mein anliegen, kann mir vielleicht einer das programm von vb5 in vb6 umschreiben, und es dann so ändern das es die themperaturen in eine log.txt schreibt, und mir das dann als projektdatei zukommen lassen (=

    ich brauche den kleinen tool für meine Bierbrausteuerung, die Arbeit würde ich dann mit 1-2 Flaschen meines selbstgebrauten Bieres belohnen (=

    ich danke schonmal im vorraus wenns noch fragen gibt, matthesmaik@actown.de

    Brixen schrieb:

    ich brauche den kleinen tool für meine Bierbrausteuerung, die Arbeit würde ich dann mit 1-2 Flaschen meines selbstgebrauten Bieres belohnen (=

    Wie groß sind die Flaschen?



    Edit: Im VB6 Prog scheinen alle Informationen vorhanden zu sein.
    VB6 ist aber nicht mein Ding.
    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fraju“ ()

    Hallo

    Hast du mit dem VB5 Programm das Instrument auslesen können?
    Es kann sein das dieses Instrument ,ohne Anforderung, ständig Daten sendet.

    Nimm ein Terminal stelle es auf 2400 Baud, 8 DatBit ,1Stopbit ein.
    Mal sehen ob du etwas empfangen kannst.
    P.S.
    Vielleicht meldet sich Einer ,welcher das VB5 Prog besser bewerten kann ,als ich.
    Gruß
    Prinzipiell ist das Prog ja nicht sonderlich kompliziert und sicher auch kein großer akt nach VB6 zu übersetzten, VB5 und 6 dürften sogar fast identisch sein.
    So wie du es hier geschrieben hast wäre dies aber eher ein Auftrag und somit im Marktplatz besser aufgehoben.
    Einfach umschreiben wäre sicher möglich aber es ist nicht gesagt das es dann funktioniert ohne das man dies Gerät zum testen hat.
    hallo ja das vb 5 messprogramm funtioniert für mein Multimeter

    wie erstell ich unter vb 6 ein terminal finde das nicht bei den komponenten

    ich hab das messgerät mal versucht mit putty auszulesen geht leider nicht ....

    kann mir einer sagen wo man vb 5.0 downlaoden kann ???


    eigendlich muss ich den inhalt vom label2 (wert) doch nur in eine textdatei importieren ....
    und das aller 5 sekunden

    hat jemand ne idee wie .......
    Hi!

    Weder von VB5 noch von VB6 gibt's kostenlose Versionen. Zumindestens nicht mehr.

    VB5-Projekte lassen sich iirc. einfach mit VB6 öffnen. Nach dem Abspeichern in VB6 gehen sie mit VB5 nicht mehr auf. Das Konvertieren nach vb.net (VB2005, VB2008, VB2010) schlägt meistens fehl, da sich viele Sachen geändert haben.
    Es drängt sich mir noch die Frage auf, zu welchem Zeitpunkt eine neue Zeile an das logfile angehängt werden soll. Ach... und soll beim Programmstart das alte Logfile gelöscht / geleer werden, oder einfach unten ran?


    mfG
    Andy
    hallo, es ist egal ob der inhalt gelöscht wird, oder ob unten einfach weitergeschrieben wird,
    jede sekunde soll ein eintrag gemacht werden ....

    was auch rechen würde wäre wenn das programm beim start eine messung mach, und danach geschlossen wird .... dabei sollte das programm aber nicht im vordergrund laufen

    könnt ihr mir ein codebeispiel posten, mit dem ich den Inhalt von label2 in eine textdatei importieren kann, in einen intervall von einer sekunde

    danke... ich hab auf einen schul pc vb6, den ich jederzeit nutzen kann (=
    1. Timer
    2. Tick Event des Timer öffnen
    3. Beispiel Code zum Speichern einer Datei

    Visual Basic-Quellcode

    1. Dim F as Integer
    2. F = Freefile
    3. Open "datei.txt" For Append #F
    4. Print #F, "Hallo dies ist ein Text"
    5. Close #F

    4. Nachdenken, Verstehen, Anwenden.
    Müsste das nicht

    Visual Basic-Quellcode

    1. Open "datei.txt" For Append AS #F
    sein? Ist bei mir schon länger her, bzw. hab zzt. kein VB6 hier installiert.

    @ Topic-Ersteller, willst du den Code jetzt doch selbst schreiben, oder suchst du immer noch jmnd, der das für dich erledigt?



    mfG
    Andy

    Brixen schrieb:

    hallo ja das vb 5 messprogramm funtioniert für mein Multimeter
    wie erstell ich unter vb 6 ein terminal finde das nicht bei den komponenten
    ich hab das messgerät mal versucht mit putty auszulesen geht leider nicht ....



    Dem Terminal ist es egal in welcher Sprache es Programmiert ist.

    Du sollst nur den RICHTIGEN empfangenen cod lesen.
    ..auch ob Daten ständig gesendet werden, oder nur auf Anforderung.
    Damit ist es einfach ein kleines Testprog zu machen


    Edit:Ich hatte einmal ein .net Programm welches auch 14 Byte eingelesen hatte.
    aber mit Sendeanforderung. (das mußt du Testen)
    Mal sehen ob ich es finde?



    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fraju“ ()

    mal ne frage wie kann ic vb sagen das die exe im hindergrund ausgeführt werden soll ....

    ich bin jetzt soweit das die exe sich nach einer halben sekunde schließt

    jedoch immer im vordergrund, das stört bei der bedienung der Brausoftware .... kann ich statt den text imbeispiel direkt Wert(Ind%()) laden also so:

    Quellcode

    1. Open "datei.txt" For Append #F
    2. Print #F, "Wert(Ind%())"


    hab leider kein Messgerät am Start ....
    Hallo Brixen,

    wie kann ic vb sagen das die exe im hindergrund ausgeführt werden soll ....

    Visual Basic-Quellcode

    1. Private Sub Form_Load()
    2. Me.WindowState = vbMinimized
    3. End Sub


    kann ich statt den text imbeispiel direkt Wert(Ind%()) laden also so:

    Sieh dir mal das an:
    vbarchiv.net/tipps/tipp_1093-a…ern-und-wieder-laden.html
    Gruss,

    Neptun

    Quellcode

    1. Private Sub Form_Load()
    2. Me.WindowState = vbMinimized
    3. Dim F As Integer
    4. F = FreeFile
    5. Open "Log.txt" For Append As #F
    6. Print #F, "33.33"
    7. Close #F
    8. End Sub
    9. Private Sub Timer1_Timer()
    10. End
    11. End Sub
    so weit bin ich jetzt )= naja es schreibt schonmal ne zahl in die log (=

    jetzt muss ich das nurnoch mit dem messprogramm irgendwie verknüpfen
    diese woche Freitag is schon Brautag )=

    hier das Messprogramm :

    Quellcode

    1. Public Function Einheit(Ind%()) As String
    2. If Ind%(10) And 2 Then E1$ = "K" 'Byte10, Bit2
    3. If Ind%(10) And 4 Then E1$ = "n" 'Byte10, Bit3
    4. If Ind%(10) And 8 Then E1$ = "æ" 'Byte10, Bit4
    5. If Ind%(11) And 2 Then E1$ = "M" 'Byte11, Bit2
    6. If Ind%(11) And 4 Then E1$ = "%" 'Byte11, Bit3
    7. If Ind%(11) And 8 Then E1$ = "m" 'Byte11, Bit4
    8. 'If Ind%(12) And 2 Then E2$ = "Delta " 'Byte12, Bit2 wird beim DT-9062 nicht gebraucht,fuer Hold genommen
    9. If Ind%(12) And 4 Then E2$ = "Ohm " 'Byte12, Bit3
    10. If Ind%(12) And 8 Then E2$ = "Farad " 'Byte12, Bit4
    11. If Ind%(13) And 2 Then E2$ = "Hertz " 'Byte13, Bit2
    12. If Ind%(13) And 4 Then E2$ = "Volt " 'Byte13, Bit3
    13. If Ind%(13) And 8 Then E2$ = "Ampere" 'Byte13, Bit4
    14. If Ind%(14) And 2 Then E2$ = "HFE " 'Byte14, Bit2
    15. If Ind%(14) And 4 Then E2$ = "øC " 'Byte14, Bit3
    16. Einheit$ = E1$ + E2$ 'Teilstrings zusammensetzen
    17. End Function
    18. Public Function Bereich(Ind%()) As String
    19. Bereich$ = " " 'wenn kein Bit gesetzt, 3 Leerzeichen
    20. If Ind%(1) And 4 Then Bereich$ = "DC " 'Byte1, Bit3
    21. If Ind%(1) And 8 Then Bereich$ = "AC " 'Byte1, Bit4
    22. End Function
    23. Public Function Info(Ind%()) As String
    24. If Ind%(1) And 1 Then Tmp$ = " RS232" 'Byte1, Bit1
    25. If Ind%(1) And 2 Then Tmp$ = Tmp$ + " Auto" 'Byte1, Bit2
    26. If Ind%(10) And 1 Then Tmp$ = Tmp$ + " Dio" 'Byte10, Bit1
    27. If Ind%(11) And 1 Then Tmp$ = Tmp$ + " Ton" 'Byte11, Bit1
    28. If Ind%(12) And 2 Then Tmp$ = Tmp$ + " Hold" 'Byte12, Bit1 Hold erscheint fuer Dreick bei Differenz Messung
    29. If Ind%(13) And 1 Then Tmp$ = Tmp$ + " Batt" 'Byte13, Bit1
    30. Info$ = Tmp$ 'Alle Angaben zusammensetzen
    31. End Function
    32. Public Function Ziffer(Byte1%, Byte2%) As Integer
    33. 'Erzeugt aus 3 niederwertigen Bits vom ersten Byte und 4 niederwertigen
    34. 'vom zweiten Byte einen 7 - Bit Wert, der einer Ziffer zugeordnet wird
    35. DreiBit% = Byte1% Mod 8 ' obere 5 Bit loeschen
    36. VierBit% = Byte2% Mod 16 ' obere 4 Loeschen
    37. SiebenBit% = DreiBit% + VierBit% * 8 ' 7 Bit Wert erzeugen
    38. ' Sieben - Segment Anzeige
    39. '
    40. Select Case SiebenBit% ' Bit0(1)
    41. Case 40: Ziffer = 1 ' XXX 1 XXX
    42. Case 93: Ziffer = 2 ' X X
    43. Case 121: Ziffer = 3 ' Bit1(2) 6 2 Bit3(8)
    44. Case 58: Ziffer = 4 ' X Bit4 X
    45. Case 115: Ziffer = 5 ' XXX 7 XXX
    46. Case 119: Ziffer = 6 ' X (16) X
    47. Case 41: Ziffer = 7 ' Bit2(4) 5 3 Bit5(32)
    48. Case 127: Ziffer = 8 ' X X
    49. Case 123: Ziffer = 9 ' XXX 4 XXX
    50. Case Else: Ziffer = 0 '
    51. End Select ' Bit6(64)
    52. End Function
    53. Public Function Wert(Ind%()) As Single
    54. ' Erzeugt aus 4 Bytepaaren mit Hilfe der Function Ziffer 4 Ziffern
    55. ' und wertet Komma und Vorzeichenbits aus. Ergebnis ist eine Realzahl, die
    56. ' den Messwert enthaelt
    57. 'Erste Ziffer (Byte2, Bit 1-3;Byte3, Bit1-4
    58. Zahl% = Zahl% + Ziffer(Ind%(2), Ind%(3)) * 1000
    59. 'Zweite Ziffer (Byte4, Bit1-3;Byte5, Bit1-4
    60. Zahl% = Zahl% + Ziffer(Ind%(4), Ind%(5)) * 100
    61. 'Dritte Ziffer (Byte6, Bit1-3;Byte7, Bit1-4
    62. Zahl% = Zahl% + Ziffer(Ind%(6), Ind%(7)) * 10
    63. 'Vierte Ziffer (Byte8,Bit1-3;Byte9,Bit1-4
    64. Zahl% = Zahl% + Ziffer(Ind%(8), Ind%(9))
    65. 'Vorzeichen (Byte2,Bit4)
    66. If Ind%(2) And 8 Then Vorz% = -1 Else Vorz% = 1
    67. 'Kommastelle:
    68. Div% = 1 'wenn kein Komma,sonst....
    69. If Ind%(8) And 8 Then Div% = 10 'Komma zwischen Ziffer3+4(Byte8, Bit4)
    70. If Ind%(6) And 8 Then Div% = 100 'Komma zwischen Ziffer2+3(Byte6, Bit4)
    71. If Ind%(4) And 8 Then Div% = 1000 'Komma zwischen Ziffer1+2(Byte4, Bit4)
    72. Wert = Zahl% / Div% * Vorz% ' Messwert errechnen
    73. End Function
    74. Private Sub Command1_Click()
    75. End 'Programm Ende nur bei eingeschaltetem Geraet und eingeschalteter Rs232 moeglich,sonst nur Taste Strg und Entf
    76. End Sub
    77. Public Sub Form_Load()
    78. 'Programm Visual Basic 5.0 geschrieben
    79. ' Das Programm holt Messwerte vom Digitec DT-9062
    80. ' man kann dann die Messwerte weiter verarbeiten und
    81. 'z.B mit dem BMC Messystem meM-PIO(USB) Ausgaenge abhaengig vom
    82. 'Messwert schalten. Das DT-9062 wird sozusagen als
    83. 'Analogeingabegeraet benutzt.
    84. 'Bei Fragen E-Mail: Jochen.Pagel@t-online.de
    85. End Sub
    86. Private Sub Label4_Click()
    87. 'Anzeige Einheiten
    88. End Sub
    89. Public Sub Text1_GotFocus()
    90. MSComm1.CommPort = 1 'welcher Com Port hier 1 oder 2 eingeben
    91. MSComm1.Settings = "2400,N,8,1" 'uebertragungs Einstellung
    92. MSComm1.InputLen = 0 ' Com Buffer auf 0 setzen
    93. MSComm1.PortOpen = True 'Com Port oeffnen Tru Wahr False Unwahr
    94. Dim Ind%(1 To 14), im$(1) 'Array fuer 14Byte anlegen und im$(1) auf 1 Array setzen
    95. Do 'Auessere Schleife oeffnen
    96. Test% = 0 ' Test% auf 0 behaelt evtl. wert
    97. Do 'Innere Schleife oeffnen
    98. im$(1) = MSComm1.Input ' Von Com Port einlesen
    99. MSComm1.InputLen = 1 'Nur ein wert einlesen
    100. If im$(1) = "" Then GoTo 45 'wenn nichts von Com Port, kommt wieder zurück
    101. Ind%(1) = AscB(im$(1)) 'Buchstaben in Zahl umsetzen
    102. Test% = Ind%(1) \ 16 'hoeherwertiges Nibble ausklammern
    103. 45: 'wenn nichts vom Com Port kommt hier springen, weil AscB(im$(1)) bei 0 wert Programmabbruch macht
    104. Loop Until Test% = 1 ' wahr, wenn wert von Com Port empfangen
    105. For I% = 2 To 14 'Byte 2-14 holen
    106. 46: 'zurueck Sprungmarke damit wirklich 2-14Byte eingelesen wird
    107. MSComm1.InputLen = 1 'nur 1Byte holen
    108. im$(1) = MSComm1.Input 'Buchstaben von Com Port holen
    109. If im$(1) = "" Then GoTo 46 'falls nichts kommt wieder zurück
    110. Ind%(I%) = Asc(im$(1)) 'Buchstaben in Zahl umsetzen
    111. Next 'naechsten wert einlesen
    112. Label1.Caption = Bereich(Ind%()) ' Bereich Anzeigen: Sprung zur function Bereich
    113. Label2.Caption = Wert(Ind%()) ' Messwert Anzeigen:Sprung zu funktion Wert
    114. Label3.Caption = Einheit(Ind%()) ' Einheiten Anzeigen:Sprung zu function Einheit
    115. Label4.Caption = Info(Ind%()) ' Info Anzeigen: sprung zur funktion Info
    116. Loop Until DoEvents ' solange ausfuehren bis Prg.beendet wird
    117. End Sub
    jemand ne idee wie ich das dann verknüpfe ?

    danke im vorraus
    Hallo

    Wenn du das VB5 Prog nehmen willst ,und es schnell gehen soll,
    würde ich in Zeile 125 den gelesenen Temperaturwert in eine Datei Schreiben.
    Diesen Wert kannst du dann nach Wahl weiterverarbeiten,mit einen Anderen Prog.
    Eventuell mußt du alle 10 Messungen nur aktiv schreiben um nur einen Schreibzyklus pro/sek zu erhalten

    Es dürfte aber in .Net schnell geschrieben sein(nur Temperatur .
    Gruß
    Hallo
    VB 5 /6 kann ich ein wenig nachvollziehen,aber bei jeder Syntaxanfrage würde ich scheitern.
    Du kannst die Werte am einfachstes in einer Textdatei speichern.

    Label1.Caption = Bereich(Ind%()) ' Bereich Anzeigen: Sprung zur function Bereich
    Label2.Caption = Wert(Ind%()) ' Messwert Anzeigen:Sprung zu funktion Wert
    Label3.Caption = Einheit(Ind%()) ' Einheiten Anzeigen:Sprung zu function Einheit
    Label4.Caption = Info(Ind%()) ' Info Anzeigen: sprung zur funktion Info

    Das sollten sie sein?


    In .net würde ich es schon hinbekommen.
    Wie ich denke,mußt du nur 14Byte einlesen.
    Sendet dein Instrument immer,oder nur auf Anforderung?
    Das mußt du schon beantworten,dann können wir schnell was in .net zusammen bastel.

    Gruß