ComPort veri alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

ComPort veri alma

Mesaj gönderen mmg »

Merhaba,

Delphi 10.2 ile aşağıda ki parametreleri ve kodu kullanarak comport componentini kullanarak seri porttan data almak istiyorum. Data geliyor fakat düzenli gelmiyor, çoğunluğu data bölünmüş olarak geliyor. Bu arada Hyper Terminalde deneme yapıyorum data doğru geliyor. Benim uygulamamda teraziden datanın nasıl geldiğini aşağıda aynen paylaşıyorum. Ne yaptımsa maalesef çözemedim, yardımlarınıza gerçekten çok ihtiyacım. Şimdiden çok teşekkür ediyorum.

Memo alana gelen data :

Kod: Tümünü seç

ST,GS,
  0.4916kg
ST,GS,  0.4916k
g
ST,GS,  0.4916kg    --> bu data doğru
ST,GS,  0
.4916kg
ST,GS,  0.491
6kg
ST,GS, 
 0.4916kg
ST,GS,  0.4916kg  --> bu data doğru

Kod: Tümünü seç

Baud rate= 9600
Data bits= 8
Stop bits= 1
Parity= none
Flow control= none

Kod: Tümünü seç

procedure TVERIALVER.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  GELENDATA: String;
begin
  GELENDATA:= '';
  
  //.. Burada başlangıç bitiş ayrımını şimdilik yapmadım sadece datanın doğru gelmesini görmek istiyorum.
  ComPort1.ReadStr(GELENDATA, Count);
  MEMO1.Lines.Add(GELENDATA);
end;
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: ComPort veri alma

Mesaj gönderen ertank »

Merhaba,

Kullandığınız bileşen hangisi bilmiyorum. Ancak siz "KARAKTER" okuma yapıyorsunuz. Yanlış anlaşılmasın, com port iletişimi karakter bazında olur zaten. Dolayısıyla, verinin ENTER karakteri ile bölünmesi sizin için "DOĞRU" ise ENTER karakterine kadar gelen verileri peş peşe ekleme yapıp bu karakter gelince memo içine yazmalısınız.

Bileşenin RxLine benzeri bir olayı var ise bunu kullanmayı deneyebilirsiniz.

Ben bu işler için eskiden ücretli, şimdi açık kaynak kodlu TurboPack AsyncPro bileşenlerini öneriyorum. Bileşen seti içindeki TApdDataPacket bileşeni yapmak istediğinizi fare tıklamaları ile yapabilmenizi sağlıyor.

Forumda benzer sorular daha önce de sorulmuştu.
viewtopic.php?t=37705

Yukarıdaki soru ve cevaplarını inceleyerek sorununuzu çözebileceğinize inanıyorum.

Delphi 10.2 içinde olup olmadığını hatırlamıyorum. Ancak 10.3.3 ve sonrası için Tools menüsü altında "Getit package manager" vardır. Bahsedilen bileşenler buradan ücretsiz yüklenebilir.

Eğer Delphi 10.2 içinde Getit yok ise aşağıdaki bağlantıdan kodları alıp Delphi içine elle yüklemeniz mümkün.
https://github.com/TurboPack/AsyncPro
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: ComPort veri alma

Mesaj gönderen mmg »

Ertan Bey Merhaba,

Delphi 10.2 içinde TurboPack AsyncPro bileşenleri varmış, kurulumunu yaptım. Viewtopic.php?t=37705 linkinden örnek kodunuzu aldım yarın terazi başında denemesini de yapacağım inşallah. Öneriniz ve yardımınız için çok teşekkür ediyorum.
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: ComPort veri alma

Mesaj gönderen mmg »

Ertan Bey Merhaba,

Allah razı olsun sizden bir sorun bu kadar net çözülebilir, beni saçma sapan bileşenleri kullanmaktan kurtardığınız gibi süper profesyonel bir bileşen paketi ile tanışmama da vesile oldunuz. Sabah "viewtopic.php?t=37705" linkinde anlattığınız şekilde kurulumu yaparak örnek kodunuzu kullandım ve sonuç mükemmel. Hiç bir sorun yok çok temiz ve hızlı bir veri akışı sağlandı. Tekrar çok teşekkür ediyorum.
Cevapla