LPT1 steuern direkt über PB ?!

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Beitrag 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:
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Beitrag 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:
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Beitrag von Then »

:( Nöööö, hängt schonwieder !!
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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.
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Beitrag 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...
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1754
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Beitrag von Then »

hm... pump ich damit meinen Code nicht zu viel auf ?? .... werde aber mal testen ! Nur eben nicht mehr heute ! Danke
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Antworten