Hi, ich nutze Turbo Delphi Explorer, nun möchte ich gerne den ComPort ansprechen, aber leider gestaltet sich das Ganze irgendwie recht kompliziert. Ich habe zwar diverse Tutorials gefunden, aber irgendwie habe die mich alle nicht wirklich weiter gebracht. Leider funktioniert mit der Turbo Explorer das Einbinden von Komponenten von 3. Anbietern wie zum Beispiel SerialNG nicht. Ich habe zwar auf http://www.the-starbearer.de/Praxis/ElektronikamPC/RS232/portdll.htm eine Port.dll gefunden, die man für die RS232 und Delphi nutzen kann, aber leider gibt es da nicht so richtig viele Infos, wie ich diese nun in Delphi einbinden und nutzen kann. Ich würde mich sehr freuen, wenn jemand eine kurze Anleitung für mich hätte, wie ich diese dll nutzen kann. Vielen Dank
Hi, ich habe nach langem suchen zu der Port.dll eine Referenz gefunden: http://www.b-kainka.de/referenz.txt Damit war es mir jetzt schon möglich die Funktionen zu deklarieren. Port Unit Code: unit Port; interface implementation Function OPENCOM(S:PCHAR):Integer; stdcall; external 'Port.dll'; Procedure CLOSECOM; stdcall; external 'port.dll'; Function READBYTE: WORD; stdcall; external 'port.dll'; Procedure SENDBYTE(Wert: WORD); stdcall; external 'port.dll'; Function DSR: WORD; stdcall; external 'port.dll'; Function CTS: WORD; stdcall; external 'port.dll'; Function RI: WORD; stdcall; external 'port.dll'; Function DCD: WORD; stdcall; external 'port.dll'; Procedure RTS(Wert: WORD); stdcall; external 'port.dll'; Procedure TXD(Wert: WORD); stdcall; external 'port.dll'; Procedure DTR(Wert: WORD); stdcall; external 'port.dll'; Procedure TIMEOUT(Wert: WORD); stdcall; external 'port.dll'; Procedure DELAY(ms: WORD); stdcall; external 'port.dll'; Procedure TIMEINIT; stdcall; external 'port.dll'; Function TIMEREAD: WORD; stdcall; external 'port.dll'; Procedure DELAYUS(ms: WORD); stdcall; external 'port.dll'; Procedure TIMEINITUS; stdcall; external 'port.dll'; Function TIMEREADUS: WORD; stdcall; external 'port.dll'; Procedure REALTIME(d: WORD); stdcall; external 'port.dll'; end. Danach wollte ich versuchen die Schnittstelle zu öffnen, dabei habe ich mich ein wenig an dieser Seite orientiert: http://www.b-kainka.de/delphi.htm Leider ohne Erfolg, denn der Compiler haut mir da leider einen fehler raus, mit dem ich nichts anfangen kann: [Pascal Fehler] Unit2.pas(43): E2003 Undefinierter Bezeichner: 'OPENCOM' [Pascal Fataler Fehler] RS232.dpr(6): F2063 Verwendete Unit 'Unit2.pas' kann nicht compiliert werden Hier noch mein Code des Formulars: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Port, ExtCtrls, StdCtrls, Menus; type TForm2 = class(TForm) MainMenu1: TMainMenu; Da1: TMenuItem; Info1: TMenuItem; Beenden1: TMenuItem; est1: TMenuItem; procedure Info1Click(Sender: TObject); procedure Beenden1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Beenden1Click(Sender: TObject); begin Close(); end; procedure TForm2.FormCreate(Sender: TObject); begin OPENCOM(Pchar('com2:19200,N,8,1')); end; procedure TForm2.Info1Click(Sender: TObject); begin ShowMessage('XXX'); end; end. Ich würde mich sehr freuen, wenn jemand einen Tipp hätte... Vielen Dank
Bei Bedarf könnte ich eine DLL mit Delphi 5 Beispiel zur Verfügung stellen.
Hi Robert, danke für den Tipp Robert, jetzt macht der Compiler zumindest schonmal keine Zicken mehr, aber irgendwie funktioniert das ganze immer noch nicht so ganz, wenn ich versuche etwas an einen MC zusenden, kommt da leider nix an. An dem MC Programm kann es nicht liegen, da es mit einer C# Software problemlos klappt. So sieht der Delphi Code aus: procedure TForm2.FormCreate(Sender: TObject); begin OPENCOM(Pchar('com2:2400,N,8,1')); end; procedure TForm2.Button2Click(Sender: TObject); begin SendByte(2); end; Die MC Software empfängt für gewöhnlich das Zeichen "1" und zeigt den Empfang an, in dem dann an Portd.5 eine Led leuchtet. Ich würde mich sehr freuen, wenn du mir die DLL und den Beispiel Code zur Verfügung stellen würdest.
Hi, man kann leider bei den Turbo Versionen keine externen Komponenten einbinden, deshalb bleibt nur eine Lösung mit einer DLL.
Bevor ich dich mit einer weiteren DLL zuschütte, schau mal du sendest eine binäre 2. Wenn du eine "1" senden willst, musst du in pascal $31 schreiben.
Hallo Robert, ok dann ist natürlich klar, das das nicht klappt, gibt es irgendwo eine Tabelle oder so, wo ich sehen kann, wie ich die ASCII Zeichen in Delphi/Pascal schreiben muss?... Danke
ASCII Tabellen gibt es überall im Netz, aber du kannst auch schreiben ord('1');
Hi, mit dem ord(X); klappt das ganze jetzt ohne Probleme, dafür vielen Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.