Autor Beitrag
zero
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 09.08.02 07:40 
was seit ihr doch alles für grobmotiriker :wink: wieso denn gleich relais ?? ich würde erstmal transistoren benutzen und wenn es DANN um höhere volt/ampere zahlen geht mal nen relai dahinter setzen...

naja wie auch immer jedenfalls würde ich den drückerport nehmen da hast du 8 datenleitungen die du an/aus setzen kannst.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
{$IFDEF Win32}
FUNCTION PortIn(Addr: WORD): BYTE; Assembler; StdCall;
  ASM
    mov dx, Addr // Adresse ins DX-Register schreiben
    in al, dx    // Port lesen. (AL entspricht Result)  
  END;
{$ELSE}
FUNCTION PortIn(Addr: WORD): BYTE;
BEGIN
  Portin := Port[Addr];
END;
{$ENDIF}

{$IFDEF Win32}
PROCEDURE PortOut(Addr: Word; Data: Byte); Assembler; StdCall;
  ASM
    mov dx, Addr    // Adresse nach DX
    mov al, Data    // Datenbyte nach AL
    out dx, al      // Port schreiben
  END;
{$ELSE}
PROCEDURE PortOut(Addr: WORD; Data: BYTE);
BEGIN
  Port[Addr] := Data;
END;
{$ENDIF}


de code hier sollte dir unter delphi die portsteuerung ermöglichen, leider nur unter 95,98,ME vür NT systeme bräuchtest du dann doch eine kleinen "treiber" da da nix ist mit direktem portzugirff :(

naja jedenfalls könntest du

ausblenden Quelltext
1:
PortOut($378,256);					


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

hmm ja was gibts dazu noch zu sagen eigentlich nichts weiter :) hoffe das hilft dir etwas :)
Cashels
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: Fr 09.08.02 08:35 
Hallo,

was die Port Ansteuerung angeht, hatt ich mal ne Freeware Komponente, die angeblich auch unter NT läuft. Ich kann dir die gerne mailen bei Bedarf.

@zero:
Zur Sache mit dem Relais hab ich aber jetzt auch noch ne grundsätzliche Frage. Denn wie willst du ausser mit einem Relais schalten können, wenn dir die Leistung am Port nicht ausreicht. Da muss doch dann ein stärkerer Stromkreis (sprich äußere Spannungsquelle) ins Spiel, oder?

Gruss,
Tom
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Fr 09.08.02 13:23 
die dann wohl über einen Transistor, einen Optokoppler oder ähnliches laufen müsste, wofür du in jedem Fall einen Zweiten Stromkreis brauchst, den du aber vielleicht dem Rechner Netzteil klauen könntest :wink:

Ich mach das lieber über meine IO-Karte (st-Pio-48) :wink: , durch die Active-x-controls so schön einfach zu steuern, aber im Moment binn ich noch am basteln, wie ich Geschwindigkeit und Richtung ändern kann, vielleicht doch ein Schrittmotor(mist zu langsam) :wink:

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
01Detlef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 85



BeitragVerfasst: Fr 09.08.02 18:59 
Danke für die Antworten, es hat mir schon einiges klarer gemacht, aber das mit dem Quelltext, um den Port zu steuern, verstehe ich nicht.Auf welches Ereignis reagiert denn das Programm und liest den Port????

Aber auch dann, wenn ich den Port ausgelesen habe, wie kann ich dann die richtigen Ereignisse in mein Programm nehmen um den Motor zu steuern?

Muss man den Port nicht auch ohne solch ein Programm auslesen können?

Detlef
Cashels
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: Fr 09.08.02 19:16 
Hallo Detlef,

ich versteh nicht ganz was du meinst. Es handelt sich dabei um eine Funktion, nicht um ein Ereignis.

Oder hab ich da was nicht verstanden?

Gruss,
Tom
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 10.08.02 16:36 
Hallo,

Das ganze Unterfangen ist ja mittlerweile zu einer Debatte um den richtigen Anschluß geworden.
Hier mal etwas, was direkt zur Lösung von Detlef's Problem beisteuern kann:

Ich würde nie irgendwelche "fremden" Sachen direkt an den Computer anschließen. Die heutigen Boards unterscheiden sich in der Konstruktion teilweise dermaßen, daß es bei einem ohne weiteres funktioniert, während bei dem anderen die Spannung aus der Relais-Spule den Tot für den Controller bedeuten würde. Da der Controller nicht mehr wie früher in Steckkarten sitzt, sondern im Chipsatz auf dem Board, wäre in einem solchen Fall gleich ein neues Board fällig.

Für das Problem gibt es eine "selbstgebastelte" und eine "professionelle" Lösung.
Die selbstgebastelte verstößt genau gegen das, was ich einen Absatz vorher gesagt habe, also empfehle ich hier NICHTS, denn ich will nachher nicht derjenige sein, der Detlefs neues Board bezahlen muss.

Man kann für den Anschluß des Motors alle Ports nehmen, da ist man nicht auf COM und LPT beschränkt. Am bequemsten geht es wahrscheinlich mit dem USB-Port, aber man kann beispielsweise auch den MIDI-Port (orange) benutzen, oder sagor den VGA-Anschluss.
Man schnappt sich ein entsprechendes Kabel (Patch-Kabel für USB, Nullmodemkabel für LPT und COM, Monitorkabel für VGA, ...). Die Dinger gibt's in jedem schlechten Computerfachgeschäft und kosten je nach Schnittstelle und Länge zwischen 10 und 40 Euro. Von dem schneidet man das eine Ende ab. Dann entfernt man mit einem scharfen Messer vorsichtig die (ganz) äußere Ummantelung, ohne die Isolierung der dünnen Drähte im Innern zu verletzen. Die Ummantelung sollte mindestens 3cm abgemacht werden, je mehr desto besser ist es für Grobmotoriker, aber mehr als 5-6cm sollte man nicht entfernen. Dann entisoliert man die beiden Drähte, die die Spannung liefern mit eine Ent-Isolierzange. Diese Drähte findet man heraus, indem man die Spezifikationen der jeweiligen Schnittstelle durchblättert. Teilweise findet man die beim IEEE, teilweise auch woanders im I-Net. Für USb wäre das Anschluß 3 und 4 mit den Farben Weiß und Grün. Die Kabelfarben können sich aber unterscheiden, also verlasst euch nicht auf mein Wort! Die beiden Kabel verbindet man dann mit den Anschlüssen des Motors, wobei Anschluss 2 der -Pol ist, und 3 der +Pol. Die Spannung beträgt bei USB 3,3 Volt, die maximale Stromstärke kenne ich nicht. Man kann dabei aber nciht die 5V/500mA-Leitung nehmen, durch die die Geräte Strom bekommen (einige PDA-Cradles, Mäuse, Tastaturen) da diese immer Strom führen, und nicht ein- und aus-geschaltet werden können. Hat man den Motor angeschloßen, schreibt man sich sein Programm. Die Beiden Anschlüsse (2, 3) führen jeweils dann Strom in der richtigen Richtung, wenn das Signal logisch "1" ist. Wie man sowas programmiert, habe ich zwar hier zu Hause in einem Buch stehen, aber so richtig verstanden habe ich es nicht. Es handelt sich nämlich um eine Art Schieberegister, das die entsprechenden Signal-Bits immer "reihum" addressiert und die entsprechenden Befehle an den Controller schickt. 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. Natürlich ist es theoretisch möglich, die Signale so schnell zu wechescheln, das der Anker gar nicht anfängt sich zu drehen. Das kann aber auf Dauer sowohl den Motor (Festmagnete) und den Computer (Controller) zerstören. Also ist davon abzuraten, wenn man ihn wirklich AUS schalten will.

Da bildet der COM-Anschluss eine Alternative. Da kann man beispielsweise die Signale "DTR" und "Common" (Signalmasse) benutzen. Startet man dann ein Terminal-Programm, wird das DTR-Bit auf "1" gesetzt. Der Motor dreht sich. Beendet man das Terminal-Programm wieder, so stoppt auch der Motor. Das ist allerdings nicht wirklich hilfreich, da einige Modem-Treiber und Betriebsystem-Einstellungen das DTR-Signal schon beim Booten setzen. Empfehlenswerter wäre hier das Signal "RTS". Dies kann man setzen und der Motor dreht sich. Das "RTS"-Signal wird (normalerweise) immer nur dann gesetzt, wenn Daten gesendet werden wollen, es bleibt also generell aus. Der Pin des RTS-Signals ist "7" bei 9-Pin-D-Sub und "4" bei 25-Pin-D-Sub. Die 25-Pin-Variante wird heute nicht mehr eingesetzt, da die Computer-Benutzer immer dümmer werden und schonmal LPT mit COM verwechselt haben. Daher hat man ihn abgeschafft. Man sollte also auf allen Boards nach 96/97 nur noch 9-Pin-Anschlüsse finden.
Das COM-Signal läßt sich per DOS-Interrupt "21h" ansteuern. Das macht man idealerweise per Assembler-Befehl. DOS schränkt aber die Funktionen etwas ein. Für die Leute, die diesen Thread also wegen "richtiger" Datenübertragung lesen: Der BIOS-Interrupt "14h" bietet die volle Funktionalität der Schnittstelle. Wie man diese Interrupt anspricht, und welche schneller sind, kann ich nicht sagen. Aber wenn es eine Bibliothek für Delphi gibt, die die Signale für COM einzeln setzen kann, dann sollte man diese Verwenden, da gerade bei "hardware-naher" Programmierung oft Fehler vorkommen können, die nicht immer Harmlos sind (ein falsches Register könnte das BIOS ernsthaft schädigen!!!)
Man kann, wenn man zwei Signale gleichzeitg nutzt, auch die Laufrichtung umschalten. Das benötigt aber eine elektrische Schaltung, über die ich mir hier keine Gedanken machen wollte.
Das Kabel bearbeitet man bei COM genauso wie bei USB. Nur das hier die Auswahl an Drähten etwas größer ist. Welcher Draht der richtige ist, kann ich nicht sagen, denn die Farben unterscheiden sich von Kabel zu Kabel, selbst beim gleichen Hersteller (je nach Serie). Am besten man nimmt einen Durchgangsprüfer und sucht das Kabel, welches den Pin "7", oder "4" darstellt. Die "Common"-Leitung ist übrigens auf Pin "5" (9-Pin), bzw. auf Pin "7" (25-Pin) gelegt.

Die VGA-Schnittstelle hat eine ganz entscheidende Möglichkeit:
Mit ihr kann man die Laufgeschwindigkeit des Motors verändern. Da hier die Signale als analog als Spannung herauskommen, und nicht digital (an oder aus) hat man die Möglichkeit durch Variation der Spannung auch eine Variation der Drehgeschwiindigkeit hervorzurufen. Die VGA-Schnittstelle ist jedoch in den meisten Fällen zu schade für eine solche Anwendung. Ausserdem kenne ich die Belegung nicht, und auch nciht, wie man die Signale ansteuern kann.


Die "professionelle" Lösung führt zuerst zum PC-Fachhandel. Dort gibt es so genannte "Schaltkarten" für ISA, oder manchmal auch für PCI-Slots. Diese werden zusammen mit einem Schaltkasten verbunden und in den Computer gesteckt. An diesen externen Schaltkasten kann man seinen Motor anschließen. Einige Exemplare verzichten auch auf einen solchen Kasten und lassen den Motor direkt an der Karte anschließen. Nach der Installation der (mitgelieferten) Treiber und Steuerprogramme lassen sich nun die einzelnen Anschlüsse ansteuern. Programmier oder Bastel-Aufwand beschränkt sich hierbei auf den Einbau einer Steckkarte und die Installation des Programmes. Allerdings sind solche Karten nicht ganz billig. Die Preise gehen je nach Funktionsumfang von 70Euro bis mehr als 200Euro, für entstörte, super-funktionale, hochleistungs-Profikarten.


Reicht die Spannung und die Stromstärke, die für die jeweilige Schnittstelle zulässig ist, nicht für den Motor, sollte sich keiner auf Experimente einlassen. Am besten man trennt generell immer die Schnittstelle galvanisch vom Motor. Da auch im Motor Spulen drin sind, besteht immer die Gefahr einer Unregelmäßigkeit (iwe das bei fließenden Magnerfelder nun mal der Fall ist). Diese Trennung geschieht am besten durch einen Optokoppler. Wenn man ein Relais einsetzt ist der Optokoppler sogar besonders wichtig. Zusätzlich sollte man noch Rücklaufdioden verwenden damit keine Hardware zerstört werden KANN. Sicherheit ist gerade heute wichtiger als vor 10 Jahren. Während fürher die Leiterbahnen noch relativ grob waren und auch mal mehr vetrugen, als angegeben, sind heute die Dinger so fein, das einige schon bei wenigen MicroAmpere über der Vorschrift den Geist aufegeben könnten. Und da heute die Controller alle auf dem Board sind, wird es teuer.

Tschüß
tommie-lie

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
01Detlef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 85



BeitragVerfasst: Sa 10.08.02 19:56 
Danke schön deine Anleitung hat mich um einiges weiter gebracht, mir sind viele Dinge klar geworden!!
Wie heißt denn das buch, von dem du gesprochen hast?
Kannste mir das empfehlen?

Die Anleitung hat mit die Möglichkeiten der verscheiden Ports gut verständlich erklärt und damit werde ich hoffentlich auch keine Probleme mehr haben, aber ich muss immer noch zu geben, das ich Probleme habe einen Port mit meinem eigenen Programm anzusteuern!
Das habe ich noch nicht verstanden,
aber ihr habt euch wirklich schon viel mühe gegeben, das weiss ich zu schätzen und ich versuche das auch irgendwann zurück zu geben!!

Danke Detlef
Thunder00
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 29.12.02 18:39 
*hüstel* HALLO?

Das is ja alles schön und gut...aber ihr seid ALLE am Thema vorbei! 01Detlef will nen Port ansteuern über Delphi...und ihr landet bei Zusammebruch eines Magnetfeldes einer Spule und der Strom, der dabei durch die Elektronen entsteht...und noch irgendwas mit Halbleitern...

Aber keiner hat geschrieben, wie man den Druckerport ansteuert! Was mich auch mal intressieren würde ...

Grüße,
Andreas

_________________
If you can't make it good, at least make it looks good. (Bill Gates)
Black Lightning
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 69



BeitragVerfasst: So 29.12.02 20:05 
genau nach dieser Antwort suche ich auch schon eine Ewigkeit.
Ich weiss nur soviel dass es seit NT nicht mehr über Assambler geht, sondern über von Windows verwaltete Funktionen.
Wie aber heissen diese Funktionen ??
Im Grunde braucht man doch keine extra komponente oder dll oder so überflüssig kompliziertes Zeug...einfach nur eine Funktion bei der man Portadresse und Wert eingibt.

_________________
--erst programmieren, dann denken, dann debuggen--
bash
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 05.01.03 02:56 
Hi,

also wer auf einfache art und weise mal eben über ein port was steuern oder nur so ausgeben will (vielleicht nen lichtsignal über eine kleine led) kann dafür die serielle schnittstelle verwenden.
dafür gibt es in der active-x bibliothek ein geeignetes steuerelemtent von microsoft, heißt Microsoft Comm Control (o.ä.). damit seit ihr sofort in der lage, schnell und einfach nen paar leitungen der seriellen zu schalten.

hoffe das ding wird euch für's erste erst einmal weiterhelfen. mehr kann ich euch auch´noch nicht sagen, da ich mich mit diesem thema noch nicht wirklich so recht beschäftigt habe (hatte es eigentlich mal vor... :-))

viel spaß noch beim basteln...
bash
Ecthelion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: So 05.01.03 15:29 
Hallo,

Ich will ne LED ansteuern, hat 7 Zeilen, d.h. ich komm mit 8-Bit-Signal gut hin, die hat nen LPT-Anschluss, ich will also über Druckerport rangehen (s. aktueller Thread von mir).

Bekomm ich das mit den von Zero vorgestellten Modulen hin? Wie genau?
Fiesta
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 06.01.03 02:20 
Titel: Ich könnte es in Vb :-(
Hallo, ich habe in VB5 ein Programm geschrieben, das auf den parallelen Port schreibt und auch vom Port liest. Das Ganze funkt unter verschiedenen Windows Versionen und auch unter Win2K.

Ich verwende dazu die dlportio.dll. Die hat eingebaute Routinen um den parallelen Port zu "bearbeiten". Leider habe ich keine (!) Ahnung von Delphi und weiss nicht, ob man die funktionen aus einer bestehenden dll von Delphi aus aufrufen kann :-(. Meine Definitionen in VB sehen dann in etwa so aus.

' Port I/O variables
Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Public Declare Sub DlPortWritePortUshort Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Integer)

Portprogrammierung geht dann z.B. so:

DlPortWritePortUshort Val(Parportwritead), LPTByte

Wenn so etwas auch unter Delphi geht, würd ich ggf. gern mein eigenes Programm irgendwann mal in Delphi "umstricken" .....


Schöne Grüsse

Fiesta :twisted:
Matthias
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121



BeitragVerfasst: Mo 06.01.03 10:03 
Hy,

@Ecthelion

Ja, solange Du nicht Windows 2K oder XP verwendest, ansonsten hilft nur ein Treiber weiter.

Hier findest Du einige Treiber. Manche davon sind Freeware mit Source.

ciao
Matthias
Ecthelion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Mo 06.01.03 11:19 
Nein, benutze Win98. Soll zwar u.U. auch Win2k laufen, aber das hat keine Priorität.
Ecthelion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Mo 06.01.03 19:57 
Wie erkenne ich die "Adresse" des Druckerports?
Thunder00
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Mo 06.01.03 20:24 
Titel: SO GEHTS !!
In irgendeinem Forum (glaub [url]www.delphi-treff.de[/url] oder [url]www.pc-magazin.de[/url]) hat einer mal das gepostet, wer kann mir das mal erklären, also die genaue Funktionsweiße:

Zitat:

naja wie auch immer jedenfalls würde ich den drückerport nehmen da hast du 8 datenleitungen die du an/aus setzen kannst.

Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
{$IFDEF Win32} 
FUNCTION PortIn(Addr: WORD): BYTE; Assembler; StdCall; 
  ASM 
    mov dx, Addr // Adresse ins DX-Register schreiben 
    in al, dx    // Port lesen. (AL entspricht Result)  
  END; 
{$ELSE} 
FUNCTION PortIn(Addr: WORD): BYTE; 
BEGIN 
  Portin := Port[Addr]; 
END; 
{$ENDIF} 

{$IFDEF Win32} 
PROCEDURE PortOut(Addr: Word; Data: Byte); Assembler; StdCall; 
  ASM 
    mov dx, Addr    // Adresse nach DX 
    mov al, Data    // Datenbyte nach AL 
    out dx, al      // Port schreiben 
  END; 
{$ELSE} 
PROCEDURE PortOut(Addr: WORD; Data: BYTE); 
BEGIN 
  Port[Addr] := Data; 
END; 
{$ENDIF}




de code hier sollte dir unter delphi die portsteuerung ermöglichen, leider nur unter 95,98,ME vür NT systeme bräuchtest du dann doch eine kleinen "treiber" da da nix ist mit direktem portzugirff

naja jedenfalls könntest du

Code:
ausblenden Quelltext
1:
PortOut($378,256);					




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


Hmm...was hat es mit den Adressen auf sich?? Auf jeden Fall haben wir hier schonmal eine gute Lösung

Leider habe ich WindowsXP. Ma schauen was Torry ([url]www.torry.net[/url] zu bieten hat).

_________________
If you can't make it good, at least make it looks good. (Bill Gates)
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Di 07.01.03 12:43 
Hi,

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


Mit diesen Zahlen, kannst Du einzeln die 8 Leitungen ansteuern.

Das heißt, wenn Du schreibst :
ausblenden Quelltext
1:
PortOut($378,1);					

dann wird nur auf die erste Leitung ein Signal gelegt. Wenn Du jetzt statt der 1 eine 3 einträgst, wird die erste und die zweite Leitung geschaltet.
Ecthelion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Di 07.01.03 17:21 
Und $378 ist also der LPT?
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Di 07.01.03 18:03 
Hi,

das ist LPT1. Die Adresse kannste über den Hardware-Manager herausbekommen.
DerKrasseHans
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 07.01.03 18:58 
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.