mikrocontroller.net

Forum: PC-Programmierung ComPort mit Turbo Delphi


Autor: Delphi User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...
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

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mit einer DLL + Delphi beispielcode etwas anfangen?

Autor: Delphi User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deine declarationen gehören ins interface.

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Bedarf könnte ich eine DLL mit Delphi 5 Beispiel zur Verfügung
stellen.

Autor: Delphi User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://sourceforge.net/projects/comport/

sollte das sein, was du suchts.

Autor: Delphi User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
man kann leider bei den Turbo Versionen keine externen Komponenten
einbinden, deshalb bleibt nur eine Lösung mit einer DLL.

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Delphi User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ASCII Tabellen gibt es überall im Netz, aber du kannst auch schreiben
ord('1');

Autor: Delphi User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

mit dem ord(X); klappt das ganze jetzt ohne Probleme, dafür vielen
Dank!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.