![]() |
AW: TComPort Problem
Empfänger ist in AtMega32 der über
![]() |
AW: TComPort Problem
Und wenn Du den String mit Write statt mit WriteStr schickst?
|
AW: TComPort Problem
Damit:
Delphi-Quellcode:
schickt er dann zwei Fragezeichen
comport1.Write(pchar(edit2.text),length(edit2.Text));
|
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". |
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. |
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 |
AW: TComPort Problem
Das gefällt mir nicht so:
Delphi-Quellcode:
Besser so:
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;
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; |
AW: TComPort Problem
Mit der Brücke zwischen 2 und 3 kommt dann der ganze String also: &B00110011
|
AW: TComPort Problem
Zitat:
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? |
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 02:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz