Blofeld
31.07.2011, 22:40
Hallo Zusammen,
hat von euch jemand Erfahrung mit der RSAPI.DLL zum ansteuern der COM-Ports in VBA?
Ich möchte in einer Dauerschleife die Serielle Schnittstelle des Robotercontrollers auslesen, wenn ein String empfangen wird soll anschließend ein weiterer String über eine zweite, virtuelle COM-Schnittstelle (USB) an ein Messgerät geschickt werden. Es funktioniert auch bereits mit VBA und der RSAPI, nur bricht der Empfang vom Controller in unregelmäßigen Abständen einfach ab, vom Controller gesendete Strings werden also nicht mehr empfangen. Hat jemand eine Idee woran das liegen könnte oder eine Alternative?
Anbei die wichtigsten verwendeten Funktionen:
Declare Function IX_OPENCOM Lib "RSAPI.DLL" (ByVal ix%, ByVal para$) As Integer
Declare Sub IX_CLOSECOM Lib "RSAPI.DLL" (ByVal ix%)
Declare Function IX_READSTRING Lib "RSAPI.DLL" (ByVal ix%, ByVal S As String) As Integer
Declare Sub IX_SENDSTRING Lib "RSAPI.DLL" (ByVal ix%, ByVal A$)
Declare Sub IX_TIMEOUT Lib "RSAPI.DLL" (ByVal ix%, ByVal B%)
Declare Sub TIMEINIT Lib "RSAPI.DLL" ()
Declare Function TIMEREAD Lib "RSAPI.DLL" () As Long
Sub Messvorgang()
Dim S As String
Dim zaehler As Integer
Dim sMess As String
Dim sMessNeu As String
Dim sRob As String
Dim sRobNeu As String
'///Öffnen der Schnittstelle zum Roboter
o1 = IX_OPENCOM(1, "COM1:9600,N,8,1")
'///Öffnen der Schnittstelle zum Roboter
o3 = IX_OPENCOM(3, "COM3:9600,N,8,1")
'/// Loop bis Stop-String von Roboter
Do
'/// Loop bis Mess-String von Roboter
Do
'///Rücksetzen des Millisekundenzählers
TIMEINIT
'///String lesen von Roboter
sRob = Space(16)
i = IX_READSTRING(1, sRob)
'///Entfernen von Leerzeichen
sRobNeu = Mid$(sRob, 1, i)
Loop Until sRobNeu = "messen" Or sRobNeu = "Stop"
'///String senden an Messgerät
IX_SENDSTRING 3, ":MEAS?" & Chr$(10)
sMess = Space(20)
'///String lesen von Messgerät
i = IX_READSTRING(3, sMess)
'///Entfernen von Leerzeichen
sMessNeu = Mid$(sMess, 1, i)
Loop Until sRobNeu = "Stop"
End Sub
Vielen Dank schon mal!
hat von euch jemand Erfahrung mit der RSAPI.DLL zum ansteuern der COM-Ports in VBA?
Ich möchte in einer Dauerschleife die Serielle Schnittstelle des Robotercontrollers auslesen, wenn ein String empfangen wird soll anschließend ein weiterer String über eine zweite, virtuelle COM-Schnittstelle (USB) an ein Messgerät geschickt werden. Es funktioniert auch bereits mit VBA und der RSAPI, nur bricht der Empfang vom Controller in unregelmäßigen Abständen einfach ab, vom Controller gesendete Strings werden also nicht mehr empfangen. Hat jemand eine Idee woran das liegen könnte oder eine Alternative?
Anbei die wichtigsten verwendeten Funktionen:
Declare Function IX_OPENCOM Lib "RSAPI.DLL" (ByVal ix%, ByVal para$) As Integer
Declare Sub IX_CLOSECOM Lib "RSAPI.DLL" (ByVal ix%)
Declare Function IX_READSTRING Lib "RSAPI.DLL" (ByVal ix%, ByVal S As String) As Integer
Declare Sub IX_SENDSTRING Lib "RSAPI.DLL" (ByVal ix%, ByVal A$)
Declare Sub IX_TIMEOUT Lib "RSAPI.DLL" (ByVal ix%, ByVal B%)
Declare Sub TIMEINIT Lib "RSAPI.DLL" ()
Declare Function TIMEREAD Lib "RSAPI.DLL" () As Long
Sub Messvorgang()
Dim S As String
Dim zaehler As Integer
Dim sMess As String
Dim sMessNeu As String
Dim sRob As String
Dim sRobNeu As String
'///Öffnen der Schnittstelle zum Roboter
o1 = IX_OPENCOM(1, "COM1:9600,N,8,1")
'///Öffnen der Schnittstelle zum Roboter
o3 = IX_OPENCOM(3, "COM3:9600,N,8,1")
'/// Loop bis Stop-String von Roboter
Do
'/// Loop bis Mess-String von Roboter
Do
'///Rücksetzen des Millisekundenzählers
TIMEINIT
'///String lesen von Roboter
sRob = Space(16)
i = IX_READSTRING(1, sRob)
'///Entfernen von Leerzeichen
sRobNeu = Mid$(sRob, 1, i)
Loop Until sRobNeu = "messen" Or sRobNeu = "Stop"
'///String senden an Messgerät
IX_SENDSTRING 3, ":MEAS?" & Chr$(10)
sMess = Space(20)
'///String lesen von Messgerät
i = IX_READSTRING(3, sMess)
'///Entfernen von Leerzeichen
sMessNeu = Mid$(sMess, 1, i)
Loop Until sRobNeu = "Stop"
End Sub
Vielen Dank schon mal!