Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TpApro ApdComPort Terazi Okuma
#1
Merhaba Arkadaşla,

Hazırladığım projede TEM Marka bir teraziden gelen veriyi okumam gerekiyor. Aşağıda kullandığım kod mevcut. Terazinin gönderdiği veri şu şekilde:
+ 0.122kg 
t 0.000kg 
+ 0.122kg 
t 0.000kg 
+ 0.122kg 
t 0.000kg 
+ 0.122kg 
t 0.000kg 


Sürekli gönderim yapan bir terazi. Benim + ile gelen değerden 0.122 olan kısmı ayırmam gerekiyor ve bunu ekrana yazmam gerekiyor. Fakat bir türlü başaramadım. Sadece yukarıdaki şekilde alabiliyorum. Desteğinize ihtiyacım var acilen. Teşekkürler.


procedure TTartiEkran.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
   I, j: Word;
   gelenkarakter: AnsiChar;
   sonuc: string;
begin 
   try
      sonuc := '';
      for I := 1 to Count do
      begin
            gelenkarakter := ApdComPort1.GetChar;
            case gelenkarakter of
            #0 .. #1: { Don't display };
            else
                  sonuc := sonuc + gelenkarakter;
            end;
      end;
      lbGramaj.Caption:=Sonuc;
   except
   end;
end;
Cevapla
#2
Merhaba Aşağıdaki şekilde bir kod işini Görecektir. Sonucu Virgüllü sayı olarak döner ve matematik işlemlerinde kullanabilirsin.


function KgAyristir(GelenData:String): Double;
const
  Tumkarakterler = '+0123456789.kg ';
  Numerik        = '0123456789.';
  Prefix : Char  = '+';
  Virgul : Char  = ',';
  Nokta  : Char  = '.';
var
  Harf : integer;
  Temp : String;
begin
Result := 0;
if GelenData <> '' then
  begin
  if GelenData[1] = Prefix then
    begin
     Delete(GelenData,1,1);
     GelenData := GelenData.Trim;
     // yabancı Karakter varsa Sonuç "0" olsun.
     for Harf := 1 to length(GelenData) do
       if not (AnsiPos(GelenData[Harf],Tumkarakterler) > 0) then
        exit;
     // Kg için Parse işlemi
      for Harf := 1 to length(GelenData) do
      begin
         if AnsiPos(GelenData[Harf],Numerik) > 0 then
          if GelenData[Harf] = Nokta then
             Temp := Temp + Virgul else
             Temp := Temp + GelenData[Harf];
        Result := StrtoFloat(Temp);
      end;
    end;
end;
end;



Kullanımı : 

procedure TTartiEkran.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  I, j: Word;
  gelenkarakter: AnsiChar;
  sonuc: string;
begin 
  try
     sonuc := '';
     for I := 1 to Count do
     begin
           gelenkarakter := ApdComPort1.GetChar;
           case gelenkarakter of
           #0 .. #1: { Don't display };
           else
                 sonuc := sonuc + gelenkarakter;
           end;
     end;
     lbGramaj.Caption:=floattoStr(KgAyristir(Sonuc))+ ' kg';;
  except
  end;
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#3
(06-05-2019, Saat: 16:13)smyrna231802 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.....Desteğinize ihtiyacım var acilen. Teşekkürler.

Ve Gidiş o Gidiş.. 
Demek ki Acil işini gören arazi moduna geçiyor Smile inşallah işini çözmüşsündür.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#4
(08-05-2019, Saat: 16:48)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(06-05-2019, Saat: 16:13)smyrna231802 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.....Desteğinize ihtiyacım var acilen. Teşekkürler.

Ve Gidiş o Gidiş.. 
Demek ki Acil işini gören arazi moduna geçiyor Smile inşallah işini çözmüşsündür.

Bu nedenle, hazır bilgi vermeyin; yol gösterin diyorum sık sık. Hatta bu nedenle pek de sevilmiyorum Undecided
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
(08-05-2019, Saat: 16:52)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(08-05-2019, Saat: 16:48)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ve Gidiş o Gidiş.. 
Demek ki Acil işini gören arazi moduna geçiyor Smile inşallah işini çözmüşsündür.

Bu nedenle, hazır bilgi vermeyin; yol gösterin diyorum sık sık. Hatta bu nedenle pek de sevilmiyorum Undecided

Aslında Doğrusu Dediğiniz gibi ama görünce dayanamadım. O sırada String Parse içeren kodlar yazıyordum soruyu görünce hızımı alamadım açıkçası Smile neyse arkadaş işini görsün de konuyu anlamayacağı için gene gelecektir Smile
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#6
Ne kadar da acelecisiniz. Konuyu 6 Mayısta açmışım bugün daha 9 Mayıs. Ön yargılarınızdan kurtulun herkes aynı değildir. Test işlemlerim geçikti bugün sonucu yazacağım. 

(08-05-2019, Saat: 16:48)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(06-05-2019, Saat: 16:13)smyrna231802 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.....Desteğinize ihtiyacım var acilen. Teşekkürler.

Ve Gidiş o Gidiş.. 
Demek ki Acil işini gören arazi moduna geçiyor Smile inşallah işini çözmüşsündür.

(08-05-2019, Saat: 17:10)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(08-05-2019, Saat: 16:52)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bu nedenle, hazır bilgi vermeyin; yol gösterin diyorum sık sık. Hatta bu nedenle pek de sevilmiyorum Undecided

Aslında Doğrusu Dediğiniz gibi ama görünce dayanamadım. O sırada String Parse içeren kodlar yazıyordum soruyu görünce hızımı alamadım açıkçası Smile neyse arkadaş işini görsün de konuyu anlamayacağı için gene gelecektir Smile
Cevapla
#7
(09-05-2019, Saat: 09:41)smyrna231802 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ne kadar da acelecisiniz. Konuyu 6 Mayısta açmışım bugün daha 9 Mayıs. Ön yargılarınızdan kurtulun herkes aynı değildir. Test işlemlerim geçikti bugün sonucu yazacağım. 

(08-05-2019, Saat: 16:48)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ve Gidiş o Gidiş.. 
Demek ki Acil işini gören arazi moduna geçiyor Smile inşallah işini çözmüşsündür.

(08-05-2019, Saat: 17:10)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Aslında Doğrusu Dediğiniz gibi ama görünce dayanamadım. O sırada String Parse içeren kodlar yazıyordum soruyu görünce hızımı alamadım açıkçası Smile neyse arkadaş işini görsün de konuyu anlamayacağı için gene gelecektir Smile

Amaç Dikkatini çekmekti demek başarılı olmuşum. Testlerini yap takılırsan gene buradayız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#8
(09-05-2019, Saat: 09:43)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(09-05-2019, Saat: 09:41)smyrna231802 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ne kadar da acelecisiniz. Konuyu 6 Mayısta açmışım bugün daha 9 Mayıs. Ön yargılarınızdan kurtulun herkes aynı değildir. Test işlemlerim geçikti bugün sonucu yazacağım. 

Amaç Dikkatini çekmekti demek başarılı olmuşum. Testlerini yap takılırsan gene buradayız.


Teşekkür ederim.  Shy
Cevapla
#9
Hepinize teşekkürler. Örneklerinizin faydası oldu.
Programın show olayında ApdComPort1.open:=true; yapıyorum. Sonrası da aşağıda.

procedure TTartiEkran.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
 I: Word;
 gelenkarakter: AnsiChar;
 sonuc: string;
 artivar: integer;  
begin 
 try
   sonuc := '';
   for I := 1 to Count do
   begin
     gelenkarakter := ApdComPort1.GetChar;
     case gelenkarakter of
       #0 .. #31: { Don't display }
         ;
     else
       if (gelenkarakter <> ' ') and (gelenkarakter <> 'k') and
         (gelenkarakter <> 'g') then
       begin
         sonuc := sonuc + gelenkarakter;
         if (length(sonuc) = 6) then
         begin
           artivar := ansipos('+', sonuc);
           if artivar <> 0 then
           begin
             delete(sonuc, 1, 1);
             if sonuc <> sonuc1 then
             begin
               sonuc1 := sonuc;
               sonuc := '';
             end
             else
             begin
               sonuc1 := stringreplace(sonuc1, '.', ',',
                 [rfReplaceAll, rfIgnoreCase]);
               lbTutar.Caption := floattostr(strtofloat(lbBirimfiyat.Caption) *
     (strtofloat(sonuc1)));
               lbGramaj.Caption := floattostr(strtofloat(sonuc1) * 1000);
             end;
           end;
         end;
       end;
     end;

   end;

 except
 showmessage('hata var');
 end;
end;

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Comport veri okuma klavye 16 927 18-06-2019, Saat: 17:19
Son Yorum: boreas
  Network Veri Okuma ercanskose 6 558 14-04-2019, Saat: 20:14
Son Yorum: mrmarman
Question Dosya okuma ve yazma hakkında dicle_gsm 6 660 06-02-2019, Saat: 18:06
Son Yorum: dicle_gsm
  E fatura okuma hakkında cinarbil 14 2.830 04-12-2018, Saat: 11:39
Son Yorum: cinarbil
  array den veri okuma klavye 3 565 05-11-2018, Saat: 13:28
Son Yorum: klavye



Konuyu Okuyanlar: 1 Ziyaretçi