Autor Beitrag
Johannes Maier
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 02.09.04 14:49 
Hallo,

ein Freund von mir (nein, ich bin NICHT der Verrückte ;) ) will in einer Waschmaschine Bier brauen (lol). Dazu will er diese an den PC anschließen, und per Delphi-Programm steuern.
Nun möchte er wissen, wie man vorgeht und was für Befehle / Komponenten man braucht, um die einzelnen "er nannte es PINGs" anzusteuern und dieses Methoden zuzuweisen.
Ich persönlich kenne mich in Delphi etwas aus und in C/C++ , er in Delphi und VB ... Kann man das überhaupt mit Delphi realisieren, diese Schnittstellenprogrammierung?

_________________
MfG
Johannes ehem. jbmaier
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 02.09.04 15:05 
Ich glaube, da hatten sie auch mal was im Fernsehen gezeigt über Leute, die in der Waschmaschine Bier brauen...

Dein Kollege meinte wohl Pins, also die einzelnen Stecker-Pins einer seriellen Schnittstelle. Da gibt es Komponenten, mit denen du auch in Delphi die Schnittstelle ansprechen kannst.

Cu,
Udontknow
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 02.09.04 15:46 
Kennst du da eine passende Website oder den Namen einer solchen Komponente?

_________________
MfG
Johannes ehem. jbmaier
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 02.09.04 16:00 
Einfach hier im Forum nach Suche in: Delphi-Forum, Delphi-Library "SERIELLE SCHNITTSTELLE" suchen. :wink:

Cu,
Udontknow
RFZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Do 02.09.04 16:10 
Moin,
du kannst dafür den Parallelport/LPT nutzen.
Such dir die IO.DLL im Netz und bau sie so mit in dein Programm ein: (muss in deinem Programmordner liegen)
ausblenden Delphi-Quelltext
1:
2:
procedure PortOut(Port : Word; Data : Byte); stdcallexternal 'IO.DLL';
function PortIn(Port:Word):Byte; stdcallexternal 'IO.DLL';

Mit dem Befehl PortOut($378, wert); kannst du die acht Datenleitungen (D0-D7) am Port ansteuern. 'wert' steht für die angelegte Zahl, also bei '1' ist D0 aktiv, bei '2' D1, bei '3' D0+D1, Binärsystem eben *g*, besser kann ichs grad nicht erklärn :)
Mit den 8 Pins kannst du Transistoren und damit Relais für die Waschmaschine schalten, das sollte (zumindest bei älteren Maschinen) kein Problem sein.

greetz RFZ
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 02.09.04 19:32 
Vielen Dank!!! :)

_________________
MfG
Johannes ehem. jbmaier
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 11.11.04 19:02 
So, ich muss leider dieses alte Thema wieder ausgraben :)
Wenn ich jetzt die Funktionen so aufbaue, wie RFZ beschrieben hat und auf ButtonClick einen PIN setzen lasse (z.B. den ersten), wie kann ich dann testen ob es geklappt hat? Also wie kann ich zum Beispiel einen Byte-Wert auf einem Label ausgeben oder so? ;) Falls ich PortIn zum Testen verwenden soll ...

Hoffe ihr versteht mein Gebrabbel und könnt mir helfen ;)
Johannes

_________________
MfG
Johannes ehem. jbmaier
RFZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Do 11.11.04 19:18 
Willst du es testen um ggf. eine Fehlermeldung zu bringen, oder willst du es richtig testen um zu sehn ob es geht?
Ich geh mal vom letzteren aus, daher schau dir mal das Pinlayout vom Parallelport an:
www.mg.dropbear.id.a...rmod/pc-connect.html (Da hat auch ein Typ was übern Parallelport gesteuert)
Du musst hald jetzt mit nem Voltmeter oder einer LED (braucht hier zum Test nur direkt angeschlossen werden, das geht) schaun ob an D0 zu GND (das dürften die Grünen auf dem Bild sein) Spannung anliegt.

greetz RFZ
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 11.11.04 19:25 
Hmm ehrlich gesagt versteh ich von der Seite nicht allzuviel ;)
Der Bekannte von mir hat jedenfalls jetzt ein kleines "Gerät" (kA was es genau ist) mit Relais gebaut, da ist ein Schalter für an die Serielle Schnittstelle schon dran, den muss ich einfach nur anstecken, und ein Ausgangsstecker für an die Waschmaschine auch.
Kann man den Wert, der momentan anliegt, nicht vom PC her auslesen? Also mit der Funktion PortIn oder Assembler oder so?
Ich möchte nicht wissen, ob es wirklich funktioniert, da es später sowieso auf einem anderen PC laufen wird, und man sieht ja, ob die Maschine angeht oder nicht ;)
Es stellt sich mir nur die Frage, wie ich den Byte-Wert auf einem Label oder Panel ausgeben kann.
Achja, was bedeutet eigentlich $347 ?

Danke schonmal
Johannes

_________________
MfG
Johannes ehem. jbmaier
RFZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Do 11.11.04 19:35 
Johannes Maier hat folgendes geschrieben:
Kann man den Wert, der momentan anliegt, nicht vom PC her auslesen? Also mit der Funktion PortIn oder Assembler oder so? (...) Es stellt sich mir nur die Frage, wie ich den Byte-Wert auf einem Label oder Panel ausgeben kann.

Jup, versuch mal label.caption := inttostr(integer(bytevar));
Ich kanns grad nicht testen, da mein Delphi mit "Runtime Error 217 at 000329EC" abbricht, aber das dürft hinhaun. bytevar ist hald hier der Ausgabewert von PortIn.

Johannes Maier hat folgendes geschrieben:
Achja, was bedeutet eigentlich $347 ?

$378 ist die Adresse des Parallelports, normal lautet die des LPT1 so. LPT2 hat normal $278. Die Adressen kannst auch im Gerätemanager lesen, oder evtl im Bios.

greetz RFZ
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 11.11.04 20:02 
OK ich teste das sofort :) Wirklich vielen vielen Dank für die superschnellen Antworten, hab ehrlich gesagt erst morgen früh mit einer Antwort überhaupt gerechnet *g*

_________________
MfG
Johannes ehem. jbmaier
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 11.11.04 20:29 
So, ich hab mal folgenden Code getestet, jedoch erscheint immer 255 als Wert. Ist das nur ein Verständnisfehler (denn ich muss zugeben, dass ich das mit dem Setzen der Werte noch nicht ganz verstanden hab :) Programmiere nicht sehr intensiv in Delphi) oder klappt es nicht?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
begin
  PortOut($3471);  //Was der Wert jetzt für eine Bedeutung hat, weiß ich nur ungenau
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Panel1.Caption := IntToStr(Integer(PortInt(§347)));
end;


Das Formular besteht aus diesen zwei Buttons + einem Panel.
Ich starte also das Programm und drücke Button2 um den aktuellen Wert zu erhalten. Der ist 255 (was bedeutet das?) und dann Button1 + Button2 um den geänderten Wert zu erfahren, aber der ist wieder der gleiche ;)

Danke schonmal für die Mühe ;)

_________________
MfG
Johannes ehem. jbmaier
RFZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Do 11.11.04 21:33 
$378
Johannes Maier Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 11.11.04 21:45 
Omg ich Idiot *kopfandiewandhau* ;) Du hast es oben schonmal geschrieben und ich Trottel schreibs einfach weiter falsch :shock:
Danke :oops:

_________________
MfG
Johannes ehem. jbmaier