TpApro ApdComPort Terazi Okuma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
enesharun
Üye
Mesajlar: 15
Kayıt: 17 Eki 2014 10:46

TpApro ApdComPort Terazi Okuma

Mesaj gönderen enesharun » 06 May 2019 09:29

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;
Derece: Double;
begin // butonlara basıldığında yapılması gereken iş burada derlenecek
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;

Kullanıcı avatarı
Commandx
Üye
Mesajlar: 135
Kayıt: 01 Oca 2008 05:34

Re: TpApro ApdComPort Terazi Okuma

Mesaj gönderen Commandx » 06 May 2019 02:32

Tekrar deneyin bakalım (Altta Copy ile başlayan string parse işlemi ile bir deneyin)

Kod: Tümünü seç

procedure TTartiEkran.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
I, j: Word;
gelenkarakter: AnsiChar;
sonuc: string;
Derece: Double;
begin // butonlara basıldığında yapılması gereken iş burada derlenecek
try
sonuc := '';
for I := 1 to Count do
begin
gelenkarakter := ApdComPort1.GetChar;
case gelenkarakter of
#0 .. #1: { Don't display }
;
else
sonuc := COPY((sonuc + gelenkarakter),2,7) ; // burası
end;
end;
lbGramaj.Caption:=Sonuc;
except
end;
end;
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
Zamane tickcount'u
except
ON E: Exception do
Begin
Application.MessageBox(Pchar('Can sıkıntısı '+#13+E.Message),'Hata',MBOKk+MB_ICONWARNING);
Abort;
End;
end;

enesharun
Üye
Mesajlar: 15
Kayıt: 17 Eki 2014 10:46

Re: TpApro ApdComPort Terazi Okuma

Mesaj gönderen enesharun » 06 May 2019 02:44

Merhaba,

Teşekkürler fakat olmadı :(



Commandx yazdı:
06 May 2019 02:32
Tekrar deneyin bakalım (Altta Copy ile başlayan string parse işlemi ile bir deneyin)

Kod: Tümünü seç

procedure TTartiEkran.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
I, j: Word;
gelenkarakter: AnsiChar;
sonuc: string;
Derece: Double;
begin // butonlara basıldığında yapılması gereken iş burada derlenecek
try
sonuc := '';
for I := 1 to Count do
begin
gelenkarakter := ApdComPort1.GetChar;
case gelenkarakter of
#0 .. #1: { Don't display }
;
else
sonuc := COPY((sonuc + gelenkarakter),2,7) ; // burası
end;
end;
lbGramaj.Caption:=Sonuc;
except
end;
end;

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2128
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: TpApro ApdComPort Terazi Okuma

Mesaj gönderen freeman35 » 07 May 2019 11:23

if Pos(gelenkarakter,'.0123456789')>0 then sonuc:= sonuc +gelenkarakter;
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

enesharun
Üye
Mesajlar: 15
Kayıt: 17 Eki 2014 10:46

Re: TpApro ApdComPort Terazi Okuma

Mesaj gönderen enesharun » 09 May 2019 08:43

Merhabalar sorunumu çözdüm fakat yazma zamanım olmadı. Gün içerisinde çözüm kodlarını yayınlayacağım.

enesharun
Üye
Mesajlar: 15
Kayıt: 17 Eki 2014 10:46

Re: TpApro ApdComPort Terazi Okuma

Mesaj gönderen enesharun » 10 May 2019 09:05

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

Kod: Tümünü seç

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;

Ahmet Bilgehan
Üye
Mesajlar: 7
Kayıt: 19 Nis 2016 10:00
Konum: izmir
İletişim:

Re: TpApro ApdComPort Terazi Okuma

Mesaj gönderen Ahmet Bilgehan » 14 May 2019 11:05

kolay gelsin ben terazi işi yapıyorum proje ne üzerine açaba ögrenebilirmiyim ilginiz için şimdiden teşekkür ederim

Cevapla