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;
Cevapla
#3
(06-05-2019, Saat: 16:13)smyrna231802 Adlı Kullanıcıdan Alıntı: ....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.
Cevapla
#4
(08-05-2019, Saat: 16:48)SercanTEK Adlı Kullanıcıdan Alıntı:
(06-05-2019, Saat: 16:13)smyrna231802 Adlı Kullanıcıdan Alıntı: ....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ı:
(08-05-2019, Saat: 16:48)SercanTEK Adlı Kullanıcıdan Alıntı: 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
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ı:
(06-05-2019, Saat: 16:13)smyrna231802 Adlı Kullanıcıdan Alıntı: ....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ı:
(08-05-2019, Saat: 16:52)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: 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ı: 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ı: 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ı: 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.
Cevapla
#8
(09-05-2019, Saat: 09:43)SercanTEK Adlı Kullanıcıdan Alıntı:
(09-05-2019, Saat: 09:41)smyrna231802 Adlı Kullanıcıdan Alıntı: 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
  E fatura okuma xlm metemet 5 1.266 06-04-2025, Saat: 19:30
Son Yorum: metemet
  Mikrotik routher Port okuma Mert_37 1 648 23-08-2024, Saat: 16:46
Son Yorum: Syntax
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 6.526 08-11-2023, Saat: 00:06
Son Yorum: berkan
  OPC Server veri okuma enigma 1 1.305 13-09-2023, Saat: 11:50
Son Yorum: shooterman
  ReadProcessMemory ile veri okuma nasıl yapılır eraendless 2 1.210 07-09-2023, Saat: 00:35
Son Yorum: veteran



Konuyu Okuyanlar: 1 Ziyaretçi