Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TComPort Problem (https://www.delphipraxis.net/155712-tcomport-problem.html)

Muellermilchtrinker 5. Nov 2010 14:13

AW: TComPort Problem
 
Empfänger ist in AtMega32 der über Input in BASCOM auf einen String wartet. Das Problem ist, dass wenn ich über ein Terminal den String sende, dass dann alles funktioniert. Nutze ich aber oben geposteten Code, dann werden nur die ersten zwei Zeichen aus dem Edit2 ('&B00110011') übertragen. Sprich er sendet nur &B.

Nersgatt 5. Nov 2010 14:24

AW: TComPort Problem
 
Und wenn Du den String mit Write statt mit WriteStr schickst?

Muellermilchtrinker 5. Nov 2010 14:27

AW: TComPort Problem
 
Damit:
Delphi-Quellcode:
comport1.Write(pchar(edit2.text),length(edit2.Text));
schickt er dann zwei Fragezeichen

Nersgatt 5. Nov 2010 14:34

AW: TComPort Problem
 
Irgendwie beschleicht mich das Gefühl, dass das Problem vielleicht an einer anderen Stelle zu suchen ist.
Zeig doch mal etwas mehr Quellcode "drumrum".

Muellermilchtrinker 5. Nov 2010 14:36

AW: TComPort Problem
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CPortCtl, StdCtrls, CPort;

type
  TForm1 = class(TForm)
    ComTerminal1: TComTerminal;
    ComPort1: TComPort;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Button3: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
comport1.Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
var s:ansistring;
begin
comPort1.Write(pchar(edit1.Text),1);
comport1.Write(#13,1);
s := ansistring(edit2.Text);
comport1.WriteStr(s);
comport1.Write(#13,1);
end;

end.

LargoD 5. Nov 2010 15:02

AW: TComPort Problem
 
Wenn der ATMega angeschlossen ist, siehst Du im Terminalprogramm die Antwort, und nicht das, was raus geht.
Häng den ATMega mal ab und mach eine Brücke zwischen Pin 2 und Pin 3 der seriellen Schnittstelle. Dann siehst Du im Terminal was Du sendest. Vielleicht hat der ATMega ja ein Geschwindigkeitsproblem, was Du natürlich bei manueller Eingabe nicht merkst.

Gruß
Erich

shmia 5. Nov 2010 15:04

AW: TComPort Problem
 
Das gefällt mir nicht so:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var s:ansistring;
begin
comPort1.Write(pchar(edit1.Text),1);
comport1.Write(#13,1);
s := ansistring(edit2.Text);
comport1.WriteStr(s);
comport1.Write(#13,1);
end;
Besser so:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
  var line:ansistring;
begin
  line := AnsiString(edit1.Text + #13);
  comport1.WriteStr(line);

  line := AnsiString(edit2.Text + #13);
  comport1.WriteStr(line);
end;

Muellermilchtrinker 5. Nov 2010 15:05

AW: TComPort Problem
 
Mit der Brücke zwischen 2 und 3 kommt dann der ganze String also: &B00110011

LargoD 5. Nov 2010 15:24

AW: TComPort Problem
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1059884)
Mit der Brücke zwischen 2 und 3 kommt dann der ganze String also: &B00110011

Dann klappt ja das Senden.
Wenn die Antwort vom ATega immer noch verstümmelt ist, musst Du klären, ob der ATMega Hardware- oder Software-Handshake braucht und dann in TComport das Richtige einstellen. Bei Hardware-Handshake müssen natürlich auch die entsprechenden Leitungen verdrahtet sein.
Gruß
Erich

Edit sagt: Parity und Anzahl der Stop-Bits und ähnliches hast Du richtig eingestellt?

Muellermilchtrinker 5. Nov 2010 15:24

AW: TComPort Problem
 
So, dass Programm funktioniert jetzt. Hatte noch zum Testen ne Wartefunktion im Code für den AtMega. Jetzt funktioniert alles.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz