| Autor |
Beitrag |
Ecthelion
      
Beiträge: 57
|
Verfasst: Di 07.01.03 19:08
Die Funktion Leitungen sieht ja nett aus, aber:
1. Müssen die Parameter nicht vom Bit-Typ sein? Immerhin rechnest du boolsch mit ihnen und belegst sie mit 1 und 0.
2. Was ist SHL, und was hat die jeweilige Zahl dahinter zu bedeuten?
|
|
Brueggendiek
      
Beiträge: 304
Win 98, Win98SE, Win XP Home
D5 Std
|
Verfasst: Di 07.01.03 22:51
Hallo!
Ein ganz wichtiger Hinweis:
Ohne fundierte Kenntnisse sollten Bastler sowieso die Finger von USB-Port lassen!
USB ist keine einfache Schnittstelle, sondern ein hochkomplexes System aus Hardware und Treibersoftware. "Einfach so" ein USB-Gerät zu entwickeln ist nicht möglich. Es braucht das entsprechende Bus-Interface und den Treiber.
An einer standardmäßig belegten seriellen Schnittstelle finden wir übrigens auch nicht 0 oder 5 Volt, sondern -15 oder +15 Volt (heutzutage wohl eher -12 oder +12 - Netzteil!) - da läuft dann ohne Dioden nichts.
Gruß
Dietmar Brüggendiek
|
|
Ecthelion
      
Beiträge: 57
|
Verfasst: Do 09.01.03 17:30
Hallo,
das mit dem Assembler für den Port funktioniert alles ganz toll, aber eben nur ne gewisse Zeit lang, dann hängt sich das System auf. Hab in der Delphi-Hilfe gelesen, dass Port-Adressierung via Assembler auch nich zulässig is, also musses da noch andre Möglichkeiten geben. Gibt es denn keine Delphi-internen Portfunktionen?
|
|
Thunder00
      
Beiträge: 52
|
Verfasst: Fr 10.01.03 14:45
Titel: ...
Hey,
Ich hab das nur aus einem anderem Forum kopiert. Ich bin nicht dafür verantwortlich.
Gruß,
Andreas
_________________ If you can't make it good, at least make it looks good. (Bill Gates)
|
|
DerKrasseHans
      
Beiträge: 18
|
Verfasst: Fr 10.01.03 19:33
| Zitat: | | 1. Müssen die Parameter nicht vom Bit-Typ sein? Immerhin rechnest du boolsch mit ihnen und belegst sie mit 1 und 0. |
Eigentlich hast du recht, erst wollte ich sie auch als Bool'sch definieren, nur müsste dann an jeder Stelle, an der mit l1, l2, ... gerechtnet wird, ein Ord(l1), Ord(l2), ... stehen. Als ich die mit dem Gedanken spielte, Bool'sche- statt Byte-Parameter zu verwenden, überwog meine Faulheit gestützt durch das Vertrauen, dass derjenige, der die Funktion Leitungen() benutzt nicht irgendeinen Quatsch übergiben würde, daher die Wahl des Typs Byte!
| Zitat: | | 2. Was ist SHL, und was hat die jeweilige Zahl dahinter zu bedeuten? |
SHL = SHift Left
Betrachtet man einen l-Wert als eine Kette von Bits, so verschiebt "SHL c" alle Bits im Wert um "c" Bits nach links (und füllt mit Nullen nach):
also 00000001 SHL 3 = 00001000
Die Routine konvertiert auch eigentlich nur die einzelnen Bit-Status' l1-l8 in einen Byte-Wert, mehr macht sie nicht! Sie dient eigentlich nur der Vereinfachung und macht den Code übersichtlicher.
|
|
Pierre
      
Beiträge: 138
Win 98se und XP prof
D5Pers und D7Prof
|
Verfasst: Sa 11.01.03 00:27
Hallo,
Du kannst fast mit jeder Schnittstelle am Computer einen Motor betreiben. I.d.R. muß Du jedoch zwei Stromkreise aufbauen: 1x einen Schaltstromkreis, welcher von der Schnittstellte gesteuert wird und den Leistungsstromkreis steuert 1x einen Leistungsstromkreis, welcher den Motor antreibt
Die Verbindung zwischen diesen Stromkreisläufen machst Du mit einem Reed-Relais.
Die COM - Schnittstellen arbeiten auf 12V bipolar und die PAR /GAME auf 5V TTL. Alle vertragen ca. 10mA Leistung. Die COM ist gegen Kurzschluß gesichert und eignet sich daher gut für Experimente.
schau mal hier vorbei: www.delphi-roboter.de. Für die nötigen DLLs, um die Port anzusteuern, oder wie man sie selbst mit einem Inlineassembler schreibt, für den Aufbau der Schnittstellen, für Delphi-Prg - Bsp, für Schaltungsbeispiele usw.
Gruß Pierre
|
|
Alex
      
Beiträge: 28
D5 Epr
|
Verfasst: Di 04.02.03 18:33
hab da zufällig bei Ebay ein Buch enddeckt das heißt:
Messen, Steuern, Regeln mit Delphi Pc&Elektro
möglicherweise hilft das weiter
|
|
EAGLE>
Hält's aus hier
Beiträge: 3
|
Verfasst: Mi 05.03.03 13:45
Titel: mögliche leiterbahnen
| DerKrasseHans hat folgendes geschrieben: | Moinsen,
Erstmal: ja, $378 ist die Adresse des LPT1 (siehe Geräte-Manager->LPT1->Ressourcen->E/A-Bereich
Und: Code für die Ansteuerung hast du ja auch schon (siehe PortIn/PortOut-Befehl)
Um jetzt Bit 1-8 ansteuern zu können, muss man wissen, dass ein Byte aus 8 Bit besteht wobei jedes genau den Status einer Leitung repräsentiert. Mit Bit-Shifting oder Bit-Masken kannst du dabei einzelne Leitungen ansteuern, hier ein kleiner Code:
Quelltext 1: 2: 3: 4:
| function Leitungen(l1, l2, l3, l4, l5, l6, l7, l8: Byte): Byte; begin result := l1 or (l2 shl 1) or (l3 shl 2) or (l4 shl 3) or (l5 shl 4) or (l6 shl 5) or (l7 shl 6) or (l8 shl 7); end; |
Du kannst jetzt einfach diese Funktion in den PortOut-Befehl Data-Parameter übergeben, wobei eine 1 für AN und eine 0 für AUS (wie könnte es anders sein) der einzelnen Leitungen steht:
Quelltext 1:
| PortOut($378, Leitungen(0, 0, 1, 0, 0, 1, 0, 1)); |
Dieser Befehl setzt nun die Leitungen:
1, 2, 4, 5, 7 auf AUS und...
3, 6, 8 auf AN
| Zitat: | | Der Nachteil der ganzen USB-Geschichte ist, daß man den Motor nicht aus bekommt. "1" ist nämlich der Strom in der einen Richtung, und bei "0" wird umgepolt. Damti kann man also den Motor nur in der Drehrichtung umschalten. |
Schalt doch einfach eine Diode zwischen Verbraucher und Port, genau in die Richting des bei "1" fließenden Stroms, dann fließt bei "0" der Strom nich in die andere Richtung, sondern gar nich mehr.
Jungs, kurze Anmerkung:
Könnt ihr nicht zählen?
| Zitat: | dann sind glaube ich alle 8 datenleitungen aktiv, war mir doch so ist schon etwas länger her als ich sowas gemacht habe
1
2
4
8
16
32
64
128
256 |
Das sind 9 geshiftete Zahlenwerte für Leitungsadressierung, man hat aber nur 8. |
stimmt aber man hat mit 8 leitungen 256 möglichkeiten deswegen vieleicht ?? ich frage aus dem grundichbräuchte für den unterricht nämlich mal ne erklärung zwarhab ich schon mal ne "hilfe" bekommen die bestan leider nur auf ein verweiß aufein anderes posting von einer Motorsteuerung dies ist aber etwas anderes bei einer motorsteuerung braucht man den ausgang vorrängig ich bräuchte eher den portin befehle ..
also ich fragemich wie ich genau die ports abfragn kann sozusagen :
Editfeld = der wert vom port (umgerechnet)
d.h. ich will im editfeld oder im label"gans einfach also" ausgeben welchen wert der port hat und dann kann man des ja umrechnen problem ist halt WIE KANN MAN DIE PORTS ABFRAGEN
mit IF PORT$378 =0 then ... sogeht des mit sicherheit ned... also wär nettwenns da ma ne hilfreiche NED ausm buch abgeschriebene LÖSUNG gibt thx..
ps ich weiß das es nur 5 eingänge gibt oder zumindest nur 5 die ich abfragen kann .
_________________ HILFEEEEEEEEEE
|
|
|