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 ! :cry:

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 :D
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 ?? :wink:

.... okay, dann teste ich mal damit ! Ich hoffe es funzt nun ! Vielen Dank für Deine Mühe !! :allright:

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