Autor |
Beitrag |
delphistart
      
Beiträge: 119
|
Verfasst: Do 15.03.07 15:27
Ich habe folgendes Problem:
Ich habe eine Relaisplatte über die meine Modellbahn gesteuert wird. Zur zeit funktioniert das Auslösen der Schaltung über einen Magnetschalter (Reedkontakt). Nun möchte ich gerne diesen Impuls vom PC auslösen lassen.
Dazu habe ich mir gedacht den COM-Port anzusteuern und über diesen entsprechende elektrische impulse zu senden. Gleichzeitig müsste der PC aber auch auf Impulse reagieren können, die von Magnetschaltern an den Comport gehen.
Ich habe schon eine ganze Weile gegoogelt, aber leider nichts für mich hilfreiches gefunden. Hoffe daher mal wieder auf eure Hilfe! DANKE SCHONMAL!
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.03.07 15:44
Nimm USB, alles andere kannst Du vergessen:
USB EXPERIMENT INTERFACE BOARD - BAUSATZ
Artikel-Nr.: 191003 - 62 bei www.conrad.de
29,95 EUR
USB Experimentier Interface-Board
Das Interface-Board hat 5 digitale Eingangs- und 8 Ausgangskanäle. Zusätzlich stehen noch 2 analoge Ein- und 2 Ausgänge mit einer 8-Bit Auflösung zur Verfügung. Die Anzahl der Ein- und Ausgänge kann noch weiter vergrößert werden, indem bis max. 4 Karten mit den USB-Anschlüssen des PCs verbunden werden. Alle Kommunikationsprogramme sind in einer Dynamic Link-Library (DLL) K8055D.DLL gespeichert. Sie können maßgeschneiderte Windows® (98 SE, 2000, ME, XP) Applikationen in Delphi, Visual Basic, C++ Builder oder jedem anderen 32 bit Windows-Hilfsprogramm für Applikationen, die DLL unterstützen, schreiben.
Lieferumfang: Diagnose-Software und DLL.
www.velleman.de/ot/d...duct/view/?id=351346
www.velleman.de/ot/d...roduct/view/?id=9358
www.velleman.de/ot/d...duct/view/?id=345892
www.velleman.de/ot/d...roduct/view/?id=9069
www.velleman.de/ot/d...duct/view/?id=364910
Zuletzt bearbeitet von hathor am Do 15.03.07 15:47, insgesamt 1-mal bearbeitet
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 15.03.07 15:45
Du kannst DTR und RTS softwaremaessig setzen (-12V aus, +12V an)
CTS und DSR können ausgelesen werden (-12..-3V aus, +3..+12V an).
Als Software würde ich die Delphi Komponente Async Pro (Sourceforge) empfehlen.
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Do 15.03.07 15:55
Das klingt zwar gut mit den Geräten, aber ich hatte gehofft man kann dem PC einfach mit einem Befehl über Delphi sagen:
"Gib impuls an PIN 3 von Com-Port 1"
Dann schaltet das Relais un fertig... Jemand eine Idee wie bzw. ob man das umsetzen könnte?
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 15.03.07 16:02
Genau was ich beschrieben habe, mit Async Pro würde das so aussehen :
Delphi-Quelltext 1: 2:
| Comport.RTS := True; Comport.RTS := False; |
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Fr 16.03.07 07:46
@chrisw: Danke! Das werde ich auf jeden Fall mal ausprobieren!
hathor hat folgendes geschrieben: | Nimm USB, alles andere kannst Du vergessen:
|
Kennst dazu vielleicht auch eine Anleitung/Tutorial wo jemand das schonmal gemacht hat? Ich stell mir das ziemlich kompliziert vor über USB, zumal ich (wenn es erst einmal funktioniert) weit mehr Ein- und Ausgänge brauchen werde, als mit dem Conradangebot möglich sind.
Hatte auch daran gedacht sowas selber zu bauen, aber leider weis ich nicht, wie ich die Ralais mit dem USB verbinden muss, damit das dann auch wirklich klappt...
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 16.03.07 08:44
hathor hat folgendes geschrieben: | Nimm USB, alles andere kannst Du vergessen: |
Solche Aussagen, die zudem noch unbelegt sind, zeugen von einem nicht ausgereiften Grundwissen über Ansteuerungsmöglichkeiten und Hardwareschnittstellen. Das ist so, als ob der Bayer sagt: 'Nimm Knödel, alles andere kannst Du vergessen'.
hathor, wie kommst Du zu dieser Einschätzung? Wieso werden Millionen von Geräten weiterhin mit RS-232 angesteuert? Es ist vielleicht archaisch, aber dennoch so weit verbreitet, das man ohne das Wissen um die Ansteuerung in der Industrie nicht weit kommt.
Da außerdem viele Hobbygeräte mit RS-232 Schnittstelle angeboten werden, schadet es nicht. Zumal mit Paketen wie Async-Pro, oder Varian die Programmierung popeleinfach ist: Komponente schnappen, Parameter setzen und los gehts.
_________________ Na denn, dann. Bis dann, denn.
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 16.03.07 09:22
Schon 1998 haben die PC-Hersteller beschlossen, sog. Legacy-Schnittstellen - Z.B. herkömmliche serielle Schnittstellen (RS232) und parallele Schnittstellen (Centronics-Interface) NICHT mehr zu unterstützen.
Solche PC/Notebooks werden als "legacyfree" immer häufiger angeboten - obengenannte Schnittstellen findet man immer seltener in der Grundausstattung.
Such mal einen Drucker, Scanner, ext.Festplatte oder sonst was mit Parallelschnittstelle - da kannst Du lange suchen!
Legacy-Schnittstellen sind für heutige Anforderungen viel zu langsam.
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Fr 16.03.07 10:43
Allerdings sind diese Schnittstellen für Anfänger sehr einfach zu programmieren und für kleine "langsame" Anwendungen trotzdem immernoch völlig ausreichend. Die Aussage: hathor hat folgendes geschrieben: | Nimm USB, alles andere kannst Du vergessen: |
kann ich auch absolut nicht nachvollziehen. Zur Ansteuerung des USB braucht man immer Interfaces, die man sich bei anderen Schnittstellen sparen kann.
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Fr 16.03.07 13:41
@hathor:
ich muss alzaimar völlig recht geben - das kommt eben davon, wenn man den Horizont nur auf Computer-Peripherie reduziert.  Wurde alles schon mal sattsam diskutiert, siehe hier:
www.delphi-forum.de/...sc&highlight=usb
Nur zum Verständnis: USB ist da überlegen, wo es um den Durchsatz von großen Datenmengen geht. Bei Steuerungsaufgaben, bei denen es normalerweise nur um kurze Datenpakete (einige Bytes) geht, ist USB u.U. sogar langsamer als RS232 mit z.B 57600bit/sec.
Kann ich jedem gerne vorführen.
Saubäär: guck mal unter Google unter "Burkhard Kainka" und "RSCOM" nach. ich benutze iese (von mir etwas modifizierte) Komponente, weil sie sehr einfach ist. Die anderen mir bekannten Komponenten sind für solche Steuerungen einfach zu umfangreich (Modem-, Terminalfunktionen, usw).
MfG Horst
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 16.03.07 15:03
hathor, das weiss ich (aber gut, das Du es erwähnst). Wie Du siehst, ist in 9 Jahren nix passiert, außer das man im Consumerbereich kein RS-232 mehr findet. Zu Recht, denn wer braucht das schon. Zum Spielen und Surfen ist es überflüssig.
Ich hab ja auch nicht gesagt, das USB Müll ist, aber RS-232 ist schon noch ein Standard, den man -auch weils so simpel ist- im Prinzip an einem Nachmittag gefressen hat.
Ob das bei USB auch so ist, weiss nicht nicht. Ich kenns nicht.
_________________ Na denn, dann. Bis dann, denn.
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Fr 16.03.07 17:45
chrisw hat folgendes geschrieben: | Du kannst DTR und RTS softwaremaessig setzen (-12V aus, +12V an)
CTS und DSR können ausgelesen werden (-12..-3V aus, +3..+12V an).
Als Software würde ich die Delphi Komponente Async Pro (Sourceforge) empfehlen. |
Ich denke, dass dies sicherlich die einfachste möglichkeit ist, doch finde ich einfach keinen konkreten Ansatzt für die Umsetzung. Suche jetztschon seit 3 Stunden das ganze Internet ab und komme einfach nicht wirklich weiter. Vielleicht beschreibe ich nochmal genauer, was ich wirklich brauche:
---Ausgang:
----Ich muss direkt Impulse auf einen Pin geben können (z.B 2 sek 12V)
---Eingang:
----Ich muss registrierren wenn ein durch magnetschalter ausgelöster Impuls ankommt.
Ich muss nicht die ankommenden/abgehenden SPannungen kontrollieren, jedoch muss ich wissen wie groß die abgehende ist bzw. ob diese zum Schalten eines Relais ausreicht.
Ein weiteres Problem wird früher oder später sein, dass ich wenn es erst einmal funktioniert sehr viele Ein- und Ausgängen brauchen Werde. Ich rechne mit bis zu 300 Eingängen und 350 Ausgängen. Daher müsste ich also auch Pinkombinationen nutzen können.
Natürlich kann ich wenn das einfacher ist auch irgendeinen anderen Anschluss meines PCs dafür verwenden, hauptsache ich sehe jetzt mal eine Art Lösungsansatz, sonst verzweifel ich an meiner eigenen Ratlosigkeit...
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 16.03.07 18:19
Also ich bin ja kein Spezi, aber die Spannung kontrollieren geht schon mal gar nicht mit RS-232. Du solltest Dir vielleicht doch so ein Steuergerät für Modelleisenbahnen besorgen, die machen zumindest die Spannungsregelung und verwalten dann auch die ganzen Steuerleitungen (ich denke, zu Schranken und so).
Ich soetwas bei ELV gesehen.
_________________ Na denn, dann. Bis dann, denn.
|
|
JDKDelphi
      
Beiträge: 115
Erhaltene Danke: 22
WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
|
Verfasst: Fr 16.03.07 19:10
Titel: RS-232 V24
Hallo,
ich nutze das MSCOMCTRL aus dem Betriebsystem und hab da keine Probleme mit..
Da gibts Events etc. Ganz einfach zu benutzen.
Ich poste gleich mal kurz ein Codefragment..
Gruss
|
|
JDKDelphi
      
Beiträge: 115
Erhaltene Danke: 22
WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
|
Verfasst: Fr 16.03.07 19:16
Titel: RS-232 und V24
und hier der Post:
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140:
| unit V24_Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, MSCommLib_TLB, V24_Const, StdCtrls, Menus, ComCtrls;
type TV24Form = class(TForm)
Memo1: TMemo; MSComm1: TMSComm; MainMenu1: TMainMenu; Datei1: TMenuItem; Neu1: TMenuItem; ffnen1: TMenuItem; Speichern1: TMenuItem; Speichernunter1: TMenuItem; N1: TMenuItem; Drucken1: TMenuItem; Druckereinrichtung1: TMenuItem; N2: TMenuItem; Beenden1: TMenuItem; Bearbeiten1: TMenuItem; Rckgngig1: TMenuItem; WiederholenBefehl1: TMenuItem; N3: TMenuItem; Ausschneiden1: TMenuItem; Kopieren1: TMenuItem; Einfgen1: TMenuItem; Inhalteeinfgen1: TMenuItem; N4: TMenuItem; Suchen1: TMenuItem; Ersetzen1: TMenuItem; Gehezu1: TMenuItem; N5: TMenuItem; Verknpfungen1: TMenuItem; Objekt1: TMenuItem; Fenster1: TMenuItem; NeuesFenster1: TMenuItem; Nebeneinander1: TMenuItem; berlappend1: TMenuItem; Alleanordnen1: TMenuItem; N6: TMenuItem; Verbergen1: TMenuItem; Zeigen1: TMenuItem; Hilfe1: TMenuItem; Inhalt1: TMenuItem; Index1: TMenuItem; Befehle1: TMenuItem; Verfahren1: TMenuItem; Tastatur1: TMenuItem; Suchen2: TMenuItem; Lernprogramm1: TMenuItem; Hilfebenutzen1: TMenuItem; Info1: TMenuItem; StatusBar1: TStatusBar; procedure MSComm1Comm(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Beenden1Click(Sender: TObject); private public end;
var V24Form: TV24Form; V24String : STRING;
implementation
{$R *.dfm}
procedure TV24Form.MSComm1Comm(Sender: TObject); begin case MSComm1.CommEvent of comEventBreak: Begin End; comEventFrame: Begin End; comEventOverrun: Begin End; comEventRxOver: Begin End; comEventRxParity: Begin End; comEventTxFull: Begin End; comEventDCB: Begin End; comEvCD: Begin End; comEvCTS: Begin End; comEvDSR: Begin End; comEvRing: Begin End; comEvReceive: Begin MSComm1.RThreshold := 0; v24string := MSComm1.Input; MSComm1.Output := v24string; if v24string=chr(13) then begin memo1.Lines.Add(''); MSComm1.Output := chr(10); end else memo1.Text := memo1.Text+v24string; MSComm1.RThreshold := 1; End; comEvSend: Begin End; comEvEOF: Begin End; end; end;
procedure TV24Form.FormCreate(Sender: TObject); begin MSComm1.RThreshold := 1; MSComm1.PortOpen := TRUE; {$IFDEF COPYRIGHT} MSComm1.Output := #10#13'JDK-Software 2006 Delphi6.0 V24.Terminal'#10#13; MSComm1.Output := 'SN: A548FCA0-B315-4D67-A4E7-E2A7A23F0D7A'#10#13; MSComm1.Output := 'Enter string: '#10#13; Memo1.text := ''; {$ENDIF} end;
procedure TV24Form.FormDestroy(Sender: TObject); begin {$IFDEF COPYRIGHT} MSComm1.Output := #10#13'V24.Terminal ends'#10#13; {$ENDIF} MSComm1.PortOpen := FALSE; end;
procedure TV24Form.Beenden1Click(Sender: TObject); begin Application.Terminate; end;
end. |
Kleine Test-Routine mit V24 zur Kommunikation mit einem alten PC
Wichtig!! TLB laden
Gruss
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 20.03.07 10:34
Hi
Nachdem nun die Diskussion ob Schnittstellen in 100 Jahren noch verfügbar oder nicht eigentlich nicht wirklich eine Hilfe war, möchte ich darauf hinweisen, es ist sehr lustig, einen alten Rechner mit Win98 auszurüsten und ein wenig mit dem LPT Port zu spielen. Ich habe hier als auch bei Delphi- Praxis ein Tutorial geschrieben, wie man mit diesen Schnittstellen arbeiten kann. Nix Profi, aber zum Erlernen von Delphi mit Spaß durchaus brauchbar. Und wenn denn auch noch eine "alte" völlig undigitale Modelleisenbahn gesteuert werden soll, nur zu. Wer Interesse haben sollte, nicht nur immer wieder hören zu müssen, "das geht nicht", "das macht man nicht", " das taugt nicht" der sollte mir eine kurze PN schicken und ich werde die alten Tutorials mal wieder ausgraben und direkt verschicken.
_________________ Zier dich nich so, ich krieg dich schon....
|
|
Saubäär
      
Beiträge: 376
|
Verfasst: Di 20.03.07 13:37
Hallo,
ich habe mal den LPT- Port mit der 'io.dll' angesprochen. Wie siehts denn da mit der RS-232 aus? Kannst dich ja mal umschauen.
|
|
|