Autor Beitrag
Ecthelion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138

Win 98se und XP prof
D5Pers und D7Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28


D5 Epr
BeitragVerfasst: 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



BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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? :wink:
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 ;)