Autor Beitrag
Philipp_Reitter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



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

Win 98SE, WinXP
D3,D6
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



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



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



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



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



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



BeitragVerfasst: Di 30.01.07 19:02 
klick (unten) auf www

user profile iconPhilipp_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 !?!)

user profile iconPhilipp_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 :wink: ).

user profile iconPhilipp_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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



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



BeitragVerfasst: Di 30.01.07 19:43 
user profile iconPhilipp_Reitter hat folgendes geschrieben:

woher weiß ich welcher pin welcher ist?

z.B. www.linux-magazin.de.../10/IO/parport_s.gif

user profile iconPhilipp_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. :wink:

user profile iconPhilipp_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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
PortOut($378, 0)   // alle Pins auf Low
PortOut($378, 1)   // DO auf High
PortOut($378, 2)   // D1 auf High
PortOut($378, 3)   // DO auf High UND D1 auf High
PortOut($378, 255) // D0- D7 auf High


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.

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 31.01.07 11:08 
user profile iconPhilipp_Reitter hat folgendes geschrieben:
ah ja und welche sind + und welche - ?

info.electronicwerks...tecker/parallel.html

user profile iconPhilipp_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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  i: Integer;
begin
  i := 1;               // Das erste (unterste) Bit gesetzt
  i := i or (1 shl 2);  
    // So: i war 0001
    // 1 shl 2 bedeutet, dass du eine 1 nimmst und die bitweise um 2 nach links verschiebst:
    // Aus 0001 wird also 0100.
    // Jetzt veroderst du das mit i, d.h. du siehst jeweils ein Bit an und siehst nach ob es
    // in Position entweder in der einen oder der anderen Zahl steht. --> Wenn ja, dann Bit im Ergebnis ist 1
    // 0001 or 0100 = 0101
    // Jetzt ist das erste und das dritte Bit gesetzt und damit auch die entsprechenden Pins auf High,
    // die restlichen auf Low.
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.

user profile iconPhilipp_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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mi 31.01.07 13:23 
Hi,

user profile iconPhilipp_Reitter hat folgendes geschrieben:

woher bekomm ich die ganzen
$379
$378

Systemsteuerung > System > Geräte-Manager > LPT > Eigenschaften > Ressourcen > E/A- Bereich

user profile iconPhilipp_Reitter hat folgendes geschrieben:

und was heißt das 1111?
low oder hi ?

Das kannst du am besten mit parmon.exe auslesen

user profile iconPhilipp_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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mi 31.01.07 13:59 
user profile iconPhilipp_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. :wink:

Gruß

Saubäär
zlotti
Hält's aus hier
Beiträge: 7



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



BeitragVerfasst: 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).
ausblenden 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



BeitragVerfasst: 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!