| Autor |
Beitrag |
Philipp_Reitter
      
Beiträge: 430
|
Verfasst: Di 30.01.07 13:21
Hi
ich weiß nicht ob das in diesen Bereich passt sonst helft mir weiter wo hin damit.
also ich will einen motor antreiben ....
geht das?
und wenn ja wie ?
mfg
|
|
patrick dee
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: Di 30.01.07 13:42
Titel: gehentut das schon ...
hi
wie willst du den Motor betreiben ? an und aus ? evtl mit USB steuern ? das habe ich mal mit velleman usb board gemacht. Brauchts dazu ein Relais und seperate Stromversorgung usw.
Bei dem Bausatz USB Platine ist eine CD mit Demos dabei für Delphi.
www.messtechnik-onli...lleman/velleman.html
da kannst mal schauen.
mfg
patrick
_________________ Glauben heißt nichts wissen ...
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Di 30.01.07 14:22
einfach an u. aus...
kann ich nicht einfach bei einem COMN ausgang sagen strom an, aus?
Mfg
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Di 30.01.07 14:32
Hi Philipp,
ich habe es mal über den Parallelport und der 'io.dll' gemacht. Das ist wirklich sehr einfach. Einfach nach nem Tutorial für den Parallelport und die dll vllt. über Google suchen.
Außerdem wäre ein Transistor von Vorteil, damit der Motor nicht über den Strom des Parallelports gespeist wird.
Wie groß ist der Motor, den du steuern willst?
Gruß
Saubäär
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Di 30.01.07 15:51
danke für deine aufschlussreiche antwort.
hätt von aleine auch nen transistor hergenommen!
der motor ist nicht groß... so wie in so kleinen spielzeug ventilatoren..
falls dich interessiert: ich fil mit ner kamera eine weiße fläch und da lass ich dann nen ball drüber rollen. das prog erkennt das und lässt den motor so lange laufen biss eine bewegliche scheibe da ist wo der ball hin will und fängt ihn ab...
mfg
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Di 30.01.07 15:58
Klingt interessant!
wenns dich interessiert habe ich auf meiner Homepage unter 'Projekte' ein Projekt, in dem ich mit dem Parallelport gearbeitet habe.
Wenn du noch weitere Fragen zur io.dll hast (falls du damit arbeitest), kannste mich gerne fragen.
Gruß
Saubäär
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Di 30.01.07 17:55
kannst du mir die ad. von deiner homepage sagen?
ja und zwar:
1) wo muss ich die kabel bei'm pc anschließen?
2)hab wo gelesen dass ein port zugriff in xp ned geht und dass io.dll nicht gut ist...
mfg
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Di 30.01.07 19:02
klick (unten) auf www
Philipp_Reitter hat folgendes geschrieben: |
1) wo muss ich die kabel bei'm pc anschließen?
|
Na am Parallelport (LPT, Druckeranschluss). Dazu brauchst du ein bestimmtes Kabel. (D-SUB Stecker hieß der glaube ich !?!)
Philipp_Reitter hat folgendes geschrieben: |
2)hab wo gelesen dass ein port zugriff in xp ned geht
|
Der Portzugriff läuft mit der dll unter XP (ohne dll funktionierts nicht  ).
Philipp_Reitter hat folgendes geschrieben: |
und dass io.dll nicht gut ist...
|
Naja ich habe die dll nicht programmiert, kann also nicht sagen wie sie arbeitet.
Ich kann nur sagen, dass ich keine Probleme hatte und somit nicht bestätigen kann, dass sie 'nicht gut' sei...
Gruß
Bäär
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Di 30.01.07 19:14
ok...
hab den code auf deiner hp gesehen...
3 fragen...
woher weiß ich welcher pin welcher ist?
kann ich nicht einfach mit einem kabel reinfahren?
oder das kabel meines drucker s verwenden?
wie kann ich sagen : wenn strom von pin x wieder in eien anderen reinfließt dann mach was.
hab auf deiner hp irgendwas von if=1111 gelesen
kannst du das erlöutern?
mfg
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Di 30.01.07 19:43
Philipp_Reitter hat folgendes geschrieben: |
woher weiß ich welcher pin welcher ist?
|
z.B. www.linux-magazin.de.../10/IO/parport_s.gif
Philipp_Reitter hat folgendes geschrieben: |
kann ich nicht einfach mit einem kabel reinfahren?
oder das kabel meines drucker s verwenden?
|
Ich würde schon das Druckerkabel verwenden.
Philipp_Reitter hat folgendes geschrieben: |
wie kann ich sagen : wenn strom von pin x wieder in eien anderen reinfließt dann mach was.
hab auf deiner hp irgendwas von if=1111 gelesen
kannst du das erlöutern?
|
Du hast eine Procedure PortOut, mit der du das Signal am Pin auf High bzw. Low setzt. Die Pins (D0- D7) werden Bitweise gezählt.
Delphi-Quelltext 1: 2: 3: 4: 5:
| PortOut($378, 0) PortOut($378, 1) PortOut($378, 2) PortOut($378, 3) PortOut($378, 255) |
Außerdem hast du die Funktion PortIn mit der du das Signal von Pins auslesen kannst. Wenn ich mich recht erinnere hatte ich den Pin 13 als Eingangspin benutzt.
Delphi-Quelltext 1:
| if PortIn($379) = 111 then |
wird True sobald an Pin 13 ein Lowsignal!! ankommt. Der Pin hat standardmäßig ein Highsignal. Wird jetzt ein Lowsignal angelegt, nimmt der Pin 13 auch ein Lowsignal an.
Ich habe den Pin D0 (Lowsignal) mit Pin 13 verbunden und per Timer abgefragt, wann der Pin 13 low ist.
Als Anhang habe ich dir noch ein Tool mit angehängt, mit dem du den Status deines Parallelports auslesen kannst.
Ich habe das Thema schon eine gewisse Zeit nicht mehr behandelt und kann daher einige Sachen auch nicht mehr genau nachvollziehen.
Hoffentlich hat es dir trotzdem ein wenig geholfen.
Bäär
Einloggen, um Attachments anzusehen!
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Mi 31.01.07 10:23
ok so langsam kapiere ich's
nur....
woher bekomm ich die ganzen
$379
$378
ect. und ihre bedeutung?
und was heißt das 1111?
low oder hi ?
ah ja und welche sind + und welche - ?
und warum ist
PortOut($378, 2) = D1
und
PortOut($378, 3) = D1 u. D0
so stehts jedenfalls in deinem quelltext oben...
und welche spannung kommt by: hi und bei low heraus
ah und wie man die pins auf hi setzt steht ja oben aber wie auf low?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 31.01.07 11:08
Philipp_Reitter hat folgendes geschrieben: | | ah ja und welche sind + und welche - ? |
info.electronicwerks...tecker/parallel.html
Philipp_Reitter hat folgendes geschrieben: | und warum ist
PortOut($378, 2) = D1
und
PortOut($378, 3) = D1 u. D0 |
Du musst das ganze Bitweise betrachten! 2 ist binär 10, 3 ist binär 11, so und je ein Bit entspricht jetzt einem Pin. Ganz rechts Pin 0, links daneben Pin 1, etc.
Ist das Bit auf 1 gesetzt, dann ist der Pin auf High, ist das Bit 0 (also nicht gesetzt) dann auf Low.
Ein Bit in einem Integer setzen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var i: Integer; begin i := 1; i := i or (1 shl 2); end; |
Abfragen kannst du mit if i and (1 shl 2) = 1 then, damit fragst du z.B. ab, ob das dritte Bit gesetzt ist.
Philipp_Reitter hat folgendes geschrieben: | | ah und wie man die pins auf hi setzt steht ja oben aber wie auf low? |
Wie eben gesagt: Dort wo das Bit 0 ist, ist Low, wo das Bit 1 ist, ist High.
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Mi 31.01.07 13:23
Hi,
Philipp_Reitter hat folgendes geschrieben: |
woher bekomm ich die ganzen
$379
$378
|
Systemsteuerung > System > Geräte-Manager > LPT > Eigenschaften > Ressourcen > E/A- Bereich
Philipp_Reitter hat folgendes geschrieben: |
und was heißt das 1111?
low oder hi ?
|
Das kannst du am besten mit parmon.exe auslesen
Philipp_Reitter hat folgendes geschrieben: |
und welche spannung kommt by: hi und bei low heraus
|
Es sollen wohl annähernd 0V und 5V sein. (Darum ist ein Transistor auch wichtig!)
Gruß
Saubäär
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Mi 31.01.07 13:59
Philipp_Reitter hat folgendes geschrieben: |
und welche spannung kommt by: hi und bei low heraus
|
Es sollen wohl annähernd 0V und 5V sein. (Darum ist ein Transistor auch wichtig!)
Ansonsten einfach mal mit nem Multimeter durchmessen.
Gruß
Saubäär
|
|
zlotti
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 07.06.07 18:34
Sorry das ich sonen altes Thema rauskram, aber möchte ungefähr das gleiche machen.
Hab das jetz mal ausprobiert was Saubäär geschrieben hat.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure Portout(Port : Word; Data : Byte); stdcall; external 'io.dll'; function PortIn(Port:Word):Byte; stdcall; external 'io.dll';
procedure TForm1.FormCreate(Sender: TObject); begin PortOut($378,0); end; |
Er zeigt mir aber immer an, das der 'Prozedureinsprungspunkt Portout und Portin nicht gefunden wurde'.
Kann das sein das ich ne andere dll hab? Oder hab ich was falsch gemacht?
Wär echt goil wenn mir jemand helfen könnte!
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Do 07.06.07 20:19
Hallo Zlotti, ich habe es eben nochmal ausprobiert, da ich auch lange nicht mehr damit gearbeitet habe. Dabei ist mir aufgefallen, dass du den Dll- Aufruf von PortOut falsch geschrieben hast (Portout). Delphi-Quelltext 1: 2: 3: 4:
| implementation
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll'; function PortIn(Port:Word):Byte; stdcall; external 'io.dll'; | Irgendwie scheints da Probleme zu geben. Desweiteren muss die Dll entweder im Programmverzeichnis oder in C:\Windows\System32 liegen. Ich habe dir nochmal die io.dll angehängt. Schön zum Testen ist auch der Parallelmonitor (ein paar Posts weiter oben ^). Ich hoffe ich konnte dir helfen. Gruß
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von Saubäär am Do 07.06.07 22:43, insgesamt 1-mal bearbeitet
|
|
zlotti
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 07.06.07 21:38
1A! So wie es aussieht funzt das jetz! Hab noch nischt angeschlossen um das zu probieren, aber er compiliert ohne Probleme!
Dange Dange Dange!
|
|