Seite 2 von 2
Verfasst: 06.04.2005 14:16
von 125
hi,
hab gerade mal ne halbe Stunde lang zum Thema gegooglet und dann auch was gefunden bei XP soll man den LPT/COM Anschluss per API ansteuern können: CreateFile,DeviceIoControl,GetCommState,SetCommstate etc.
hoffe die info hilft euch.
mfg
125
Verfasst: 09.04.2005 15:15
von Then
Okay, dann eben den Code nochmal - nix weltbewegendes und nicht viel anders als am Anfang von Posting :
Code: Alles auswählen
Procedure Delayus(t.l) ; Rechnerabhängig!
Structure DLong
lowlong.l
hilong.l
EndStructure
DLong=0
hitimefreq.DLong
QueryPerformanceFrequency_(@hitimefreq)
hitimecount1.DLong
hitimecount2.DLong
QueryPerformanceCounter_(@hitimecount1)
Repeat
QueryPerformanceCounter_(@hitimecount2)
Until Int((hitimecount2\lowlong - hitimecount1\lowlong)/(hitimefreq\lowlong/1000000.0))>=t
;Debug "time in µ: " + Str((hitimecount2\lowlong - hitimecount1\lowlong)/(hitimefreq\lowlong/1000000.0))
EndProcedure
If OpenLibrary(0, "InpOut32.DLL")
*out = IsFunction (0,"Out32")
Else
CloseLibrary(0)
End
EndIf
CallFunctionFast(*out,888,0)
For Hin_und_her=1 To 10
For t=1 To 11000 ; nach rechts
CallFunctionFast(*out,888,3)
CallFunctionFast(*out,888,0)
Delayus(2200)
Next
For t=1 To 11000 ; nach links
CallFunctionFast(*out,888,2)
CallFunctionFast(*out,888,0)
Delayus(2200)
Next
Next
CloseLibrary(0)
End
Keinerlei Schnick-schnack ! Übersehe ich da was ?? Lasst es 7x funktionieren von 10 und dann hängts !

Verfasst: 09.04.2005 16:23
von Falko
Hab zum Test die Hardware-Calls und DLL deaktiviert und mit shared das ganze probiert.
Scheint zu laufen
[Edit] Ohne Shared.. hat die Procedure Delayus() schon bei 2 Durchläufen gehangen. Nach dieser kleinen Änderung macht die Schleife alle 10 Durchgänge
Ich hoffe es klappt jetzt auch mit deiner Portalfräsbank. [/Edit]
Code: Alles auswählen
Procedure Delayus(t.l) ; Rechnerabhängig!
Structure DLong
lowlong.l
hilong.l
EndStructure
DLong = 0
Shared hitimefreq.DLong
QueryPerformanceFrequency_(@hitimefreq)
Shared hitimecount1.DLong
Shared hitimecount2.DLong
QueryPerformanceCounter_(@hitimecount1)
Repeat
QueryPerformanceCounter_(@hitimecount2)
Until Int((hitimecount2\lowlong - hitimecount1\lowlong)/(hitimefreq\lowlong/1000000.0))>=t
;Debug "time in µ: " + Str((hitimecount2\lowlong - hitimecount1\lowlong)/(hitimefreq\lowlong/1000000.0))
EndProcedure
;If OpenLibrary(0, "InpOut32.DLL")
; *out = IsFunction (0,"Out32")
;Else
; CloseLibrary(0)
; End
;EndIf
;CallFunctionFast(*out,888,0)
For Hin_und_her.b=1 To 10
For t.l=1 To 11000 ; nach rechts
;CallFunctionFast(*out,888,3)
;CallFunctionFast(*out,888,0)
Debug "Schleife1: " + Str(t)
Delayus(2200)
Next
For t=1 To 11000 ; nach links
;CallFunctionFast(*out,888,2)
;CallFunctionFast(*out,888,0)
Debug "Schleife2: " + Str(t)
Delayus(2200)
Next
Debug "Schleifendurchgang" + Str(Hin_und_her)
Next
:CloseLibrary(0)
End
Verfasst: 09.04.2005 18:35
von Then
@Falko : Ahaaaaaaaaa ! DELAYUS() kann der Fehler sein ?? Boah, soll das heißen die grauen Harre habe ich Dir zu verdanken ??
.... okay, dann teste ich mal damit ! Ich hoffe es funzt nun ! Vielen Dank für Deine Mühe !!

Verfasst: 09.04.2005 19:13
von Then

Nöööö, hängt schonwieder !!
Verfasst: 09.04.2005 19:22
von Falko
komisch. Hatte den Test vorhin gemacht und alle INPUT-Funktionen rausgenommen. Danach lief der Source nur 1000 Schritte und danach hat sich der Debugger aufgehängt bzw. ohne Meldung angehalten. Nachdem ich das shared eingesetzt hatte, lief er alle 10 Hauptschleifen durch ohne anzuhalten durch. Dachte, es läge daran

. Vielleicht finde ich noch was anderes.
Neuer Versuch und falls es klappt würde mich das freuen. Mach mal die Structure aus der Procedure raus. Am Anfang vom Source.
Verfasst: 09.04.2005 20:19
von Then
Tja, genau das passiert hier auch immer - ist etwas ungünstig, wenn gerade die Fräse im Holz hängt ! Naja, ohne Fehlermeldung und sonstwas - habe auch den Debugger an.... ohne trau ich mich noch nicht wirklich, aber evtl ist das die Fehlerquelle ???
Teste erst morgen weiter, weil mein Sohn gerade ins Bett ist und es doch etwas Krach macht !
Bis morgen...
Verfasst: 09.04.2005 20:26
von Andre
Then hat geschrieben:.... - habe auch den Debugger an.... ohne trau ich mich noch nicht wirklich, aber evtl ist das die Fehlerquelle ???
Wenn Du auf den Debugger, aber nicht auf Fehlerbehandlung verzichten willst, schau Dir doch mal die OnError Library im PB-Paket an.
Verfasst: 09.04.2005 20:31
von Then
hm... pump ich damit meinen Code nicht zu viel auf ?? .... werde aber mal testen ! Nur eben nicht mehr heute ! Danke