Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Microchip Seri Haberleşme Örnek Uygulama
#11
Elinize sağlık süper bir anlatım olmuş
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#12
Arkadaşlar merhaba Delphi Can'a yeni üye oldum o yüzden konunun nasıl açıldığını bilmediğim için ve bu konunun benim sorunumla alakalı olduğunu düşündüğümden dolayı buraya yazıyorum sorunumu her hangi bir hatam varsa kusura bakmayın. Benim sorunum çalıştığım iş yerinde kamyon kantarı var mevcut program yetersiz kalıyor o yüzden yeni bir program hazırlayacağım.
Öncelikle kantar cihazından rs232 kablosu ile gelen bilgiyi dinlediğimde bilgi string olarak geliyor örneğin kantar da araç yok iken ağırlık bilgisi sıfır iken (A 0) değeri okunuyor,kantarda araç varken ağırlık bilgisi atıyorum 12500 olsun (A 12500) şeklinde okunuyor ve verinin harf kısmı kantar sallanırken C değerini alıyor. Sorum şu ben comport bileşeninin rxchar olayına yazdığım kodla memo1 bileşenine veri olarak alabiliyorum yapmak istediğim örneğin memoya gelen değer araç yokken (A 0) araç varken (A 12500) kantar sallantılı iken (C ,rakam sabit değil) ben bunun sadece rakam kısmını panele yazdırıyorum evet şimdi gelen verinin A olması durumunda rakamların yeşil olması,C olması durumunda kırmızı olmasını nasıl sağlayabilirim.
kısacası kantar sallanırken rakamda sabit olmadığı için kırmızı olacak dolayısıyla tartı yapmaya izin vermeyecek,kantar sabit olunca rakamda sabit olacak ve yeşil rengini alacak dolayısıyla tartım yapmaya izin verecek biraz uzun oldu kusura bakmayı yardımlarınız için şimdiden teşekkür ederim.
Cevapla
#13
Öncelikle sorunuzu yeni bir başlık altında sorun ki insanlar sorunuz olduğunu görüp cevap verebilsin. Sorunuzda ise gelen bilgiyi label'a yazdırıp label'ın font color değişkenini değiştirerek neden istediğinizi yapmıyorsunuz ? Neden memo ?
Topluluk mopluluk yok :/
Cevapla
#14
(21-04-2019, Saat: 16:45)boreas Adlı Kullanıcıdan Alıntı: Öncelikle sorunuzu yeni bir başlık altında sorun ki insanlar sorunuz olduğunu görüp cevap verebilsin. Sorunuzda ise gelen bilgiyi label'a yazdırıp label'ın font color değişkenini değiştirerek neden istediğinizi yapmıyorsunuz ?  Neden memo ?
Öncelikle soruma cevap verdiğiniz için teşekkür ederim.
çünkü memodan istediğim satır ve sütundaki karakterleri alabiliyorum mesela memoda A  değeri görünüyor ben bu değeri panele almıyorum sadece rakam kısmını alabiliyorum ve bu özellik sadece memoya ait diye biliyorum yoksa labelde de aynı işlemi yapabilir miyim?
Cevapla
#15
Gelen datayı ayrıştıracak bir fonksiyon yazmanız gerek. Fonksiyon gelen dataya göre labelin rengini değiştirebilir. İstediğiniz basit bir işlem. Sizi zora sokan nedir anlamadım.
http://www.sercanca.com

Sadece Hobiciyim..
WWW
Cevapla
#16
(21-04-2019, Saat: 17:09)SercanTEK Adlı Kullanıcıdan Alıntı: Gelen datayı ayrıştıracak bir fonksiyon yazmanız gerek. Fonksiyon gelen dataya göre labelin rengini değiştirebilir. İstediğiniz basit bir işlem. Sizi zora sokan nedir anlamadım.
Teşekkür ederim cevabınız için .
Beni zora sokan serial iletişim konusunda hiç bir bilgimin olmaması data zaten string şeklinde geliyor gelen datayı ayrıştırma konusunda hiç bir bilgim yok inan ki.
Cevapla
#17
Pos komutuyla A'yı bulun bir sonraki A ya da C karakteri arası istediğiniz data olacaktır. Copy komutuyla aradaki stringi kopyalayın.
Topluluk mopluluk yok :/
Cevapla
#18
(21-04-2019, Saat: 20:19)boreas Adlı Kullanıcıdan Alıntı: Pos komutuyla A'yı bulun bir sonraki A ya da C karakteri arası istediğiniz data olacaktır. Copy komutuyla aradaki stringi kopyalayın.

Kardeşim teşekkür ederim verdiğin bilgiler için sonunda yapabildim.
Cevapla
#19
(21-04-2019, Saat: 17:30)bnyamin86 Adlı Kullanıcıdan Alıntı:
(21-04-2019, Saat: 17:09)SercanTEK Adlı Kullanıcıdan Alıntı: Gelen datayı ayrıştıracak bir fonksiyon yazmanız gerek. Fonksiyon gelen dataya göre labelin rengini değiştirebilir. İstediğiniz basit bir işlem. Sizi zora sokan nedir anlamadım.
Teşekkür ederim cevabınız için .
Beni zora sokan serial iletişim konusunda hiç bir bilgimin olmaması data zaten string şeklinde geliyor gelen datayı ayrıştırma konusunda hiç bir bilgim yok inan ki.

Çözüm üretmişsiniz. Ama genede basit bir fonksiyon yazacağım. Belki başkasına yararı olur.

Öncelikle COM porttan gelen datayı yakaladığınız olayın içerisinde datayı fonksiyona yolayın.

function TartiHesapla(var Yazi: TLabel; GelenData: String): Boolean;
const
 KIRMIZI = clRed;
 YESIL = clgreen;
var
 DURUM: Char;
begin
 DURUM := GelenData[1];
 Delete(GelenData, 1, 1);

 if DURUM = 'A' then
 begin
   result := true;
   Yazi.Font.Color := YESIL;
   Yazi.caption := GelenData.Trim + ' Kg';
 end
 else if DURUM = 'C' then
 begin
   result := false;
   Yazi.Font.Color := KIRMIZI;
   Yazi.caption := GelenData.Trim + ' Kg';
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if TartiHesapla(Label1, 'C 12500') then
   caption := 'Kantar Hazır'
 else
   caption := 'Kantar Hazır Değil';
end;

Mesela ;

ComReadRX olayı var diyelim. Oraya aşağıdaki gibi ilave edin. Com porttan okunan datayı GelenData kabul edersek aşağıdaki gibi olacaktır.

Değer A ile başlıyorsa label rengi Yeşil ve geriye True dönecek. C ile başlıyorsa label rengi kırmızı ve geriye false dönecek.

if TartiHesapla(Label1, GelenData) then
   caption := 'Kantar Hazır'
 else
   caption := 'Kantar Hazır Değil';
http://www.sercanca.com

Sadece Hobiciyim..
WWW
Cevapla
#20
(22-04-2019, Saat: 11:53)SercanTEK Adlı Kullanıcıdan Alıntı:
(21-04-2019, Saat: 17:30)bnyamin86 Adlı Kullanıcıdan Alıntı: Teşekkür ederim cevabınız için .
Beni zora sokan serial iletişim konusunda hiç bir bilgimin olmaması data zaten string şeklinde geliyor gelen datayı ayrıştırma konusunda hiç bir bilgim yok inan ki.

Çözüm üretmişsiniz. Ama genede basit bir fonksiyon yazacağım. Belki başkasına yararı olur.

Öncelikle COM porttan gelen datayı yakaladığınız olayın içerisinde datayı fonksiyona yolayın.

function TartiHesapla(var Yazi: TLabel; GelenData: String): Boolean;
const
 KIRMIZI = clRed;
 YESIL = clgreen;
var
 DURUM: Char;
begin
 DURUM := GelenData[1];
 Delete(GelenData, 1, 1);

 if DURUM = 'A' then
 begin
   result := true;
   Yazi.Font.Color := YESIL;
   Yazi.caption := GelenData.Trim + ' Kg';
 end
 else if DURUM = 'C' then
 begin
   result := false;
   Yazi.Font.Color := KIRMIZI;
   Yazi.caption := GelenData.Trim + ' Kg';
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if TartiHesapla(Label1, 'C 12500') then
   caption := 'Kantar Hazır'
 else
   caption := 'Kantar Hazır Değil';
end;

Mesela ;

ComReadRX olayı var diyelim. Oraya aşağıdaki gibi ilave edin. Com porttan okunan datayı GelenData kabul edersek aşağıdaki gibi olacaktır.

Değer A ile başlıyorsa label rengi Yeşil ve geriye True dönecek. C ile başlıyorsa label rengi kırmızı ve geriye false dönecek.

if TartiHesapla(Label1, GelenData) then
   caption := 'Kantar Hazır'
 else
   caption := 'Kantar Hazır Değil';
Güzel bir anlatım olmuş  elbet işime yarayacak kardeşim çok teşekkür ederim ilgin ve alakan için...
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi