Merhaba
Okulların tekrar kapanmasıyla Delphi ve Arduino üzerinde daha çok çalışmaya başladım. Aklımda şöyle bir IoT projesi tasarladım.
[img]
[/img]
1. Aşama
Tek bir Arduino'dan adc değerini Ethernet üzerinden Delphi'ye gönderip değerleri gösterip duruma göre Arduino geri komut göndermek.
Bu aşamayı başarılı bir şekilde geçtim. Case durumuna göre tek bir Arduino'ya geri komut gönderip Arduino'da işlem yapabiliyorum.
[img]
[/img]

2. Aşama
İki adet Arduino'dan adc değerini okuyup Delphi'ye göndermek ve ayrı ayrı göstermek. Bu aşamayı da tamamladım.
3. Aşama Çözemediğim ve sormak istediğim kısım
1. Aşamada tek Arduino'ya komut gönderdiğim gibi burada da iki Arduino'dan istediğim Arduino'ya (client) komut göndermek istiyorum. Bunun için bir sonraki sayfada sorulan sorudaki aynı kodları kullanarak bir client listesi oluşturdum.
Sonuçta şöyle bir ekranım oldu:

Çözemediğim ve sormak istediğim kısım ise
-iki Arduino'dan istediğime Nasıl komut gönderirim?
-OnExecute dışında buton click altında istediğim Arduino'ya komut gönderebilir miyim?
Değerli tavsiyelerinizi okumayı çok isterim.
Okulların tekrar kapanmasıyla Delphi ve Arduino üzerinde daha çok çalışmaya başladım. Aklımda şöyle bir IoT projesi tasarladım.
[img]

1. Aşama
Tek bir Arduino'dan adc değerini Ethernet üzerinden Delphi'ye gönderip değerleri gösterip duruma göre Arduino geri komut göndermek.
Bu aşamayı başarılı bir şekilde geçtim. Case durumuna göre tek bir Arduino'ya geri komut gönderip Arduino'da işlem yapabiliyorum.
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); var gelen:string; begin gelen:=AContext.Connection.IOHandler.ReadLn(); //gelen veriyi satı sonuna kadar oku Memo1.Lines.Add( DateTimeToStr( Now ) +' '+ gelen); ProgressBar1.Position:= StrToInt( gelen ); Label1.Caption:=gelen; case StrToInt(gelen) of 0..500:AContext.Connection.IOHandler.WriteLn('led_yak'); 501..1023:AContext.Connection.IOHandler.WriteLn('led_sondur'); end; end;
[img]


2. Aşama
İki adet Arduino'dan adc değerini okuyup Delphi'ye göndermek ve ayrı ayrı göstermek. Bu aşamayı da tamamladım.
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); var gelen: string; Parcala: TArray<String>; Arduino_nu:Integer; adc_deger:string; begin gelen:=AContext.Connection.IOHandler.ReadLn(); //gelen veriyi satı sonuna kadar oku Parcala := gelen.Split(['-']); Arduino_nu:= StrToInt(parcala[0]); adc_deger:= Parcala[1]; case Arduino_nu of 1:begin Memo1.Lines.Add( DateTimeToStr(Now) +' '+ adc_deger ); ProgressBar1.Position:= StrToInt( adc_deger); Label3.Caption:=adc_deger; end; 2:begin Memo2.Lines.Add( DateTimeToStr(Now) +' '+ adc_deger ); ProgressBar2.Position:= StrToInt( adc_deger); Label4.Caption:=adc_deger; end; end; end;

3. Aşama Çözemediğim ve sormak istediğim kısım
1. Aşamada tek Arduino'ya komut gönderdiğim gibi burada da iki Arduino'dan istediğim Arduino'ya (client) komut göndermek istiyorum. Bunun için bir sonraki sayfada sorulan sorudaki aynı kodları kullanarak bir client listesi oluşturdum.
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext); var LHost: string; LItem: TListItem; List: TIdContextList; begin ListView1.Items.BeginUpdate; LItem:= ListView1.Items.Add; LItem.Caption := AContext.Connection.Socket.Binding.PeerPort.ToString; LItem.SubItems.Add(AContext.Connection.Socket.Binding.PeerIP); LItem.Data:= AContext; ListView1.Items.EndUpdate; ListBox1.Items.Add(AContext.Connection.Socket.Binding.PeerIP +' '+ AContext.Connection.Socket.Binding.PeerPort.ToString) ; end;
Sonuçta şöyle bir ekranım oldu:

Çözemediğim ve sormak istediğim kısım ise
-iki Arduino'dan istediğime Nasıl komut gönderirim?
-OnExecute dışında buton click altında istediğim Arduino'ya komut gönderebilir miyim?
Değerli tavsiyelerinizi okumayı çok isterim.
KOTO Teknik 10. sınıf öğrencisiyim.
Nextion HMI, Arduino ve Delphi FMX ile ilgileniyorsanız Yotube Kanalım size katkı sağlayabilir.
Nextion HMI, Arduino ve Delphi FMX ile ilgileniyorsanız Yotube Kanalım size katkı sağlayabilir.