Szeretnék írni egy egyszerű delphi programot ami kiírja nekem egy avr két ADC posrtján való mérés eredményét. A kapcsolat soros portron át menne és a delphis programban csak két szám lenne egymás alatt. A baj, hogy nem tudom hogyan formázzam az avr-ből kiküldött adatot, hogy azt a legkönnyebben fel tudjam dolgozni delphiben. Arra már rájöttem, hogy ha pontosvesszővel a parancsok végén printelek akkor nem küldi el az avr az új sor, kocsi vissza kódokat, csak a nyers adatot.
Kód: Egész kijelölése
Print W(1);
Print W(2);
AVR programom:
Kód: Egész kijelölése
$regfile = "m16def.dat"
$crystal = 7372800
$baud = 9600
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
Start Adc
Dim W(2) As Word
Echo Off
Do
W(1) = Getadc(0)
W(2) = Getadc(1)
'-----------
Print "A";
Print W(1);
Print "B";
Print W(2);
Print "END";
Loop
End
Kód: Egész kijelölése
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CPort, CPortCtl, ExtCtrls, ComCtrls, XPMan;
type
TForm1 = class(TForm)
ComPort1: TComPort;
Button1: TButton;
Button2: TButton;
Button3: TButton;
ComLed1: TComLed;
ComLed2: TComLed;
Label1: TLabel;
Label2: TLabel;
Button4: TButton;
Button5: TButton;
Edit1: TEdit;
Label3: TLabel;
ProgressBar1: TProgressBar;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit2: TEdit;
ProgressBar2: TProgressBar;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Edit3: TEdit;
ProgressBar3: TProgressBar;
XPManifest1: TXPManifest;
GroupBox1: TGroupBox;
Edit4: TEdit;
GroupBox2: TGroupBox;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure ComPort1RxChar(Sender: TObject; Count: Integer);
procedure ComPort1AfterClose(Sender: TObject);
procedure ComPort1AfterOpen(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ComPort1.ShowSetupDialog
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if ComPort1.Connected then
ComPort1.Close
else
ComPort1.Open;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
// ComPort.StoreSettings(stIniFile, 'e:\Test.ini');
ComPort1.StoreSettings(stRegistry, 'HKEY_LOCAL_MACHINE\Software\Dejan');
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
ComPort1.LoadSettings(stRegistry, 'HKEY_LOCAL_MACHINE\Software\Dejan');
// ComPort.LoadSettings(stIniFile, 'e:\Test.ini');
end;
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str:String;
szamok : TStringList; // Define our string list variable
i : Integer;
begin
ComPort1.ReadStr(Str, Count);
szamok := TStringList.Create;
szamok.Delimiter := ' '; // Each list item will be blank separated
szamok.QuoteChar := 'I'; // And each item will be quoted with |'s
szamok.DelimitedText := Str;
Edit4.text := Str;
for i := 0 to cars.Count-1 do
Edit5.Text:= Cars[0];
Edit6.Text:= Cars[1];
// Free up the list object
cars.Free;
//sleep(60);
end;
procedure TForm1.ComPort1AfterClose(Sender: TObject);
begin
if Button3 <> nil then
Button3.Caption := 'Open';
end;
procedure TForm1.ComPort1AfterOpen(Sender: TObject);
begin
Button3.Caption := 'Close';
end;
end.
http://myavr.wordpress.com/2011/06/03/a ... ontroller/