AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi LPT steuerung - Assembler -> "Privileged Instruction"
Thema durchsuchen
Ansicht
Themen-Optionen

LPT steuerung - Assembler -> "Privileged Instruction"

Ein Thema von edosoft · begonnen am 24. Jan 2006 · letzter Beitrag vom 25. Jan 2006
Antwort Antwort
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#1

LPT steuerung - Assembler -> "Privileged Instruction

  Alt 24. Jan 2006, 20:01
Hallo,

Ich brauche ein Programm dass den LPT-Port ansteuern kann, und zwar möglichst schnell. (Schnell bei der Ausführung )
Ich hab dazu die DirectPort Komponente runtergeladen. Das hat mit Windows 98 einwandfrei funktioniert. Aber dann hab ich Windows XP draufgemacht und jetzt bringt den Fehler "Provileged Instruction". NUR: mein Bruder hat auch WinXP drauf, und auf seinem Rechner funktioniert das Programm. Ich hab auch die "inpout32" DLL probiert die funktioniert auf beiden Rechnern, braucht aber halt 5-6x soviel Zeit.
Wisst ihr wo man da einstelen kann ob der Windows das zulassen soll oder woran das liegen kann?

Wir haben beide WinXP Pro SP2 drauf! Auch Administratorrechte hab ich. Ach ja wenn ich das Programm im Win98 kompatibilitätsmodus starte dann bringt er keinen Fehler, gibt aber auch nichts aus und es dauert nochmal viel länger.

Danke schonmal im Vorraus!

mfg.
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 24. Jan 2006, 20:19
Moin,

schau doch mal hier.

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 24. Jan 2006, 20:33
Hi omatra,

Des hab ich auch schon gelesen, nur will ich nach möglichkeit nicht noch ewig treiber installieren, sondern des ding halt möglichst schnell auch auf verschiedenen pcs ausführen können.
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 24. Jan 2006, 21:17
hi,

ich habs mal getestet, der treiber da ist gut nur braucht er so ziemlich gleich lang wie die inpout32.dll, die ist sogar noch ein fitzelchen schneller und hat halt nur 32kb
immer noch ist halt die DirectPort komponente die ja mit dem OUT befehl im assembler recht einfach den port ansteuert etwa 5 bis 6 mal schneller also die beiden varianten mit dem treiber. nur funktioniert das offensichtlich nur mit manchen windows versionen. was kann man da machen damit das läuft? vielleicht irgendwelche sicherheitsrichtlinien verändern oder so?

mfg.
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 24. Jan 2006, 21:28
Warum muss die Abfrage des Ports denn so schnell sein?
Dir ist klar das Windows kein Echtzeitsystem ist? Selbst wenn du es mal schnell hinbekommst, so kann es im nächsten Augenblick wieder langsamer sein, weil Windows gerade etwas anderes zutun hat.

Deshalb finde ich meine angepriesene Komponente so gut, weil sie es dir erlaubt einen Interrupt-Handler in das System zu integrieren. Dadurch wird Windows auch nicht echtzeitfähig, aber man kann zum Beispiel die Arbeitsgeschwindigkeit drosseln, indem du man äußere Schaltung schlauer machst.

Aber ich weiss ja gar nicht was du eigentlich machen willst.

Bis dann...
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 24. Jan 2006, 21:36
ja des tool von dir funktioniert. aber zum einen port setzten mit dem tool von dir oder der inpout32 dll dauerts eben etwa 0,005ms - 0,006ms und mit dem direkten aufruf über den assembler code dauerts halt nur 0,0015ms.

naja ich werd morgen mal schauen ob der lpt controller diese geschwindigkeit überhaupt schafft nit nem frequenzzähler und wenn ers nicht schafft erübrigt sich des ja von selber .

mfg.
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 24. Jan 2006, 21:42
Schade, du hast immer noch nicht erwähnt was du da eigentlich machen willst.
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 25. Jan 2006, 15:36
ja.
also: des wird ein rotor der sich dreht, auf dem sind LEDs drauf die dann so blinken dass sich text ergibt
um die LEDs anzusteuern brauch ich ne ausreichend schnelle schnittstelle weil ich die seriell ansteuern will.

Ich habs heut mal mitm oszilloskop und nem zähler ausprobiert, wenn ich die inpout.dll verwende schaff ich etwa 100 khz. Mit dem Assembler befehl vom TDirectPort schafft man zwar etwa 400-500 khz aber das erübrigt sich für mich da ich zumindest mit meinem lpt controller in der kurzen zeit nicht mal die volle spannung aufgebaut krieg. Bei 100khz ist die Spannung am ende vorm wieder ausschalten fast voll da, bei 400 khz ist die spannung nicht mal zu nem drittel aufgebaut. (blöder controller).
Fazit: Ich werde wohl die inpout32.dll verwenden da sich die leicht einbinden lässt. Trotzdem danke für eure hilfe!
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: LPT steuerung - Assembler -> "Privileged Instruc

  Alt 25. Jan 2006, 15:58
Hallo edosoft,

danke, dass du doch noch mehr verraten hast.

Zitat von edosoft:
...(blöder controller)...
Die LPT-Schnittstelle war gedacht zur Ansteuerung von Druckern (und zwar parallel) also wenn du da jetzt was serielles und schnelles mit realisieren willst, dann kann die Schnittstelle da bestimmt nichts für. Deine gemessene Geschwindigkeit hängt auch noch vom verwendeten System ab. Anderer (langsamer / schneller) PC bedeutet auch anderes Verhalten.

Vielleicht solltest du dir noch mal mehr Gedanken über deine Hardware machen. Die Parallele-Schnittstelle ist nun mal eigentlich für parallele Aktivitäten da. Nutze das doch als Vorteil für dich. Mit dem Treiber, den ich dir vorgeschlagen habe, kannst du einen Interrupthandler realisieren, der immer dann wenn er aufgerufen wird, Daten an deine Schaltung weitergibt. Deine Schaltung sollte aus einem Schieberegister bestehen, dass man parallel laden kann. So könntest du mit einer Übertragung 8Bits in das Schieberegister laden und an deine eigentlich Schaltung seriell weitergeben. Damit hättest du schonmal eine Geschwindigkeitssteigerung von 8 erreicht. Da die Parallele Schnittstelle noch 4 weitere Steuerleitungen hat, kannst du noch mehr 8Bit-Schieberegister ansteuern und diese kaskadieren. Sagen wir mal 2Bit also 4 Bausteine, dann hast eine Geschwindigkeitssteigerung von ungefähr 32. Mit 4 mal Laden kannst du dann 32Bit übertragen.
Es ergibt sich natürlich dadurch eine kleine Verzögerung, wenn du etwas am Datenstrom im Rechner änderst, bis es am Display ankommt.
Über den Interrupteingang kann dann die Schaltung dem PC sagen, wann es Daten benötigt. Dadurch hast du eine lose Ankopplung deines Systems an den steuernden PC. Die PC-Geschwindigkeit ist dann nicht mehr so relevant. Achso, die äußere Schaltung muss dann natürlich einen eigenen Takt haben.

Dieses Verfahren habe ich bei meinem RDS-Coder eingesetzt und es funktioniert wunderbar.

Natürlich ist dann der Hardwareaufwand etwas größer, aber bei deiner Ausstattung (was man so raushören konnte) sollte das doch kein Problem sein.

MfG
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz