Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
304to308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
304to308
304to308
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

COM Schnittstellen ansprechen über VBA

COM Schnittstellen ansprechen über VBA
08.09.2003 12:40:31
chris-ka
Hallo Allerseits

hat jemand ein gutes tutoral für eine com Schnittstellenprogrammierung zum durchdebuggen

hab beim googlen leider nichts brauchbares gefunden :-(

lg
Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: COM Schnittstellen ansprechen über VBA
08.09.2003 16:53:39
Karl-Otto Reimann
Hallo Chris
Etwas in der Art?

Declare Sub TIMEINIT Lib "RSAPI" ()
Declare Function TIMEREAD Lib "RSAPI" () As Long
Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal Parameter As String)
Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
Declare Sub SENDBYTE Lib "RSAPI.DLL" (ByVal Wert%)
Declare Function READBYTE Lib "RSAPI.DLL" () As Integer
Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)

Dim action

Sub timesub1()
Sheets("Messdaten").Cells(1, 4) = Sheets("Messdaten").Cells(1, 4) + 1
i = Sheets("Messdaten").Cells(1, 4)
'Alle 10 Sekunden
If i Mod 10 = 0 Then
Sheets("Messdaten").Cells(1, 5) = Sheets("Messdaten").Cells(1, 5) + 1
GetData
End If
If Sheets("Messdaten").Ovals(1).Interior.ColorIndex = 3 Then
Sheets("Messdaten").Ovals(1).Interior.ColorIndex = 2
Else
Sheets("Messdaten").Ovals(1).Interior.ColorIndex = 3
End If
If action Then settimer1 (True) Else Sheets("Messdaten").Ovals(1).Interior.ColorIndex = 0
End Sub


Sub settimer1(an)
Application.OnTime Now + TimeValue("00:00:01"), "timesub1", , an
End Sub


Sub timerstart1()
If action Then Exit Sub
action = True
Sheets("Messdaten").Cells(1, 4) = 0
Sheets("Messdaten").Cells(1, 5) = 0
GetData
Application.OnTime Now, "timesub1"
'TIMEINIT
End Sub


Sub timerstop1()
action = False
On Error Resume Next
Application.OnTime Now, "timesub1", , False
Sheets("Messdaten").Ovals(1).Interior.ColorIndex = 0
End Sub


Sub simulation()
With Sheets("Messdaten")
For i = 2 To 5
d = 1 - (2 * Rnd) / 1
t = .Cells(1, 4)
'Zeit holen
Blatt$ = "Messplatz" + LTrim(Str$(i - 1))
t = Sheets(Blatt$).Cells(5, 12)
't = 0
.Cells(i, 1) = -20 + (45 * Exp(-t / 500)) + d
d = (2 - Rnd * 2) / 10
.Cells(i, 2) = 3 - d
Next i
End With
End Sub


Private Function NTC(Wert)
Dim R(10)
R(0) = 187.08: R(1) = 111.03
R(2) = 67.74: R(3) = 42.45: R(4) = 27.28: R(5) = 17.96
R(6) = 12.09: R(7) = 8.313: R(8) = 5.828: R(9) = 4.161
R(10) = 3.021
R_Sens = 10 * Wert / (255.0001 - Wert)
If R_Sens > R(0) Then R_Sens = R(0)
If R_Sens < R(9) Then R_Sens = R(9)
For n = 0 To 10
If R_Sens <= R(n) Then Nr = n
Next
Temp = 10 * (R(Nr) - R_Sens) / (R(Nr) - R(Nr + 1)) - 40 + Nr * 10
Temp = (Int(Temp * 10)) / 10
NTC = Temp
End Function

Sub messen()
With Sheets("Messdaten")
For i = 2 To 5
t = .Cells(1, 4)
'Zeit holen
Blatt$ = "Messplatz" + LTrim(Str$(i - 1))
t = Sheets(Blatt$).Cells(5, 12)
't = 0
SENDBYTE ((i - 2) * 2 + 1 + 100)
'Ch 0,2,4,6
.Cells(i, 1) = NTC(READBYTE)
DELAY 10
SENDBYTE ((i - 2) * 2 + 100)
'Ch 1,3,5,7
.Cells(i, 2) = READBYTE * 0.1
DELAY 10
Next i
End With
End Sub



Sub GetData()
Dim tm As Double
'simulation
messen
For n = 1 To 4
Blatt$ = "Messplatz" + LTrim(Str$(n))
If Sheets(Blatt$).Cells(1, 10) = True Then
'Messindex erhöhen
Sheets(Blatt$).Cells(1, 11) = Sheets(Blatt$).Cells(1, 11) + 1
'Zeit eintragen
Sheets(Blatt$).Cells(2, 12) = Time
'Zeitdiffrenz
Sheets(Blatt$).Cells(3, 12) = Sheets(Blatt$).Cells(2, 12) - Sheets(Blatt$).Cells(1, 12)
'Zeitdifferenz in Minuten
tm = Sheets(Blatt$).Cells(3, 12)
tm = tm * (24 * 60)
Sheets(Blatt$).Cells(4, 12) = tm
Sheets(Blatt$).Cells(5, 12) = tm * 60
'in arbeit
t0 = Sheets(Blatt$).Cells(1, 12)
y = Sheets(Blatt$).Cells(1, 11)
t = TimeValue(Time) - t0
If t < 0 Then t = 0 'konnte vorher abstürzen
Sheets(Blatt$).Cells(y, 1) = t
Sheets(Blatt$).Cells(y, 2) = Sheets("Messdaten").Cells(n + 1, 1)
Sheets(Blatt$).Cells(y, 3) = Sheets("Messdaten").Cells(n + 1, 2)
Sheets(Blatt$).Cells(y, 4) = Sheets("Messdaten").Cells(2, 3)
End If
Next n
End Sub


Sub StartProgramm()
OPENCOM "COM2:9600,N,8,2"
TIMEOUT (300)
UserForm1.PLWechsel
UserForm1.Show
End Sub


Glück Auf
Karl-Otto
Anzeige
AW: COM Schnittstellen ansprechen über VBA
08.09.2003 18:07:10
chris-ka
Danke erst mal Karl-Otto

Dann werd ich mal drauf los debuggen :-)

Du hast es fast richtig getroffen, es sind auch meßdaten eines alten dosbasierenden maschinenprogrammes.

GRUß
Christian
AW: COM Schnittstellen ansprechen über VBA
09.09.2003 11:11:33
Karl-Otto Reimann
Hallo Chris
Ich hab' noch mehr davon, kam nur nicht an meine
CD's, weil mein first Boot-device auf CD-Rom ein-
gestellt ist und sonst andere Verbindungen gekappt
worden wären.
In diesem Sinne
Gruß Karl-Otto
AW: COM Schnittstellen ansprechen über VBA
09.09.2003 14:00:36
chris-ka
:-)

Danke Karl-Otto

Wenn ich am Wochenende immer noch nicht durchgeblickt habe melde ich mich wieder

Gruß
Christian
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige