apdcomport bileşeni

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

apdcomport bileşeni

Mesaj gönderen mustafaozdemir »

merhaba arkadaşlar apdcomport bileşeni ile ilgili bir kaç sorum olacak

1- bu bileşeni kullanarak porta bağlı barkod yazıcıdan bilet basıyorum. yalnız mesela 1 den 300 e kadar bas diyorum. 200 e doğru "too small bufer for block" gibi bir hata veriyor bu sorunu nasıl çözebilirim.

2- porttan gelen veriyi dinlerken veri iki satırda geliyor. Mesela 12345678910 gibi bir veri gelecek. şöyle geliyor 1234567 bir alt satıra geçiyor 8910 bo sorunu nasıl çözebilirim. şimdiden teşekkürler.
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

bu componenti ilk kez duyuyorum fakat anladığım kadarı ile barkod yazdırırken bir sayı atıyorsun ve buffera yazılıyo bu da bufferı da hiç boşaltmıyorsundur dolunca da bu hatayı verir.

2.sorun için de birleştir tekrar :)
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

selam @microchip
komponenet asenkron pro device serial port componnet, yani kısa bizim tabirler asenkron pro :D

2. sorunun cevabı şu olabilir. gelen karakterlernden birini cntrl+enter veya enter ise editin bunu böyle gösterir.. bunu kontrol et. çözüm olarak pchar kullan,

soru 1 için: outgoing bufferda hiç böyle bişey başıma gelmedi, ayarlarda yoksa buffer size falan iki üç seferde bastır yapacaklarını. mesela 50 şer 50 şer.
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

Valla megecim ne bileyim hiç kullanmadım bu komponenti... :) yardım mı da bu kadar olur tabi yol olarak
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

arkadaşlar bu bileşen 3.parti bileşenlerden apro bileşenlerinin apdcomport bileşeni. şu bizim turbo power bileşenlerden.
gelen veriyi kontrol etmeyi bu forumdan almıştım kodu.

Kod: Tümünü seç

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  I : Word;
  C : Char;
  S : String;
begin
 s:='';
  for I := 1 to Count do 
    begin
    C := ApdComPort1.GetChar;
    end;
    case C of
      #0..#31 : {ekrana bunlar gelmesin} ;
      else
      s := s + C;
    end;
   end;
 Memo1.Lines.Add(s);
end;
** koclarınızı [ CODE ] tagı içine alın. mege
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

bu kodda dediğim gibi veri edite gidiyor enter veya herneyse satırı aşağıya atıyor bu örneği incele bi.. faydalı olabilir.
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

gelen karakterleri tek tek yazdırdım ama enterin kodu gelmedi. acaba özelliklerden mi? ama onları kurcaladım bişey bulamadım.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

Kod: Tümünü seç

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var LastCount,I : integer;
begin

LastCount:= Count;

for I := 1 to LastCount do
 begin
  cRcvBuffer[CharCntReceived]:= ApdComPort1.GetChar;
  inc(CharCntReceived);
 end;

end;
herbişeyi bi karakter dizisine aktar.. varsa karakter ne gelir elden :) kullandığın cihazı bilmediğim için bende daha fazla yorum getiremicem.
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

aynısını denedim ama olmuyor ilgine teşekkür ederim. bence kullandığım bileşenin özelliği ile alakalı ama bulamadım.
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Re: apdcomport bileşeni

Mesaj gönderen doganzorlu »

mustafaozdemir yazdı: 1- bu bileşeni kullanarak porta bağlı barkod yazıcıdan bilet basıyorum. yalnız mesela 1 den 300 e kadar bas diyorum. 200 e doğru "too small bufer for block" gibi bir hata veriyor bu sorunu nasıl çözebilirim.

2- porttan gelen veriyi dinlerken veri iki satırda geliyor. Mesela 12345678910 gibi bir veri gelecek. şöyle geliyor 1234567 bir alt satıra geçiyor 8910 bo sorunu nasıl çözebilirim. şimdiden teşekkürler.
Birinci problem seri port çalışma şeklinden kaynaklanıyor. Uygulamanız aktarım hızından daha yüksek bir hızda veri üretiyor ve komponent bunu önlemek için dahili bir buffer tutuyor. Bu buffer dolunca da bu mesajı alıyorsunuz. Eğer component in ayarlarında varsa bu buffer değerini yükseltmelisiniz. (Neticede o buffer da bir thread içinde aktarım hızına bağlı olarak bu buffer dan transfer ediyor bilgileri)

İkinci problem ise gelen bilginin cihazdan iki parça olarak gelmesinden kaynaklanıyor. Protokol ün 10 karakterlik bilgiler halinde gelen bilgi akışı şeklinde olduğunu varsayarak, gelen bilgiyi bir buffer da birleştirip 10 ar karakter ayırarak bu sorunu çözebilirsiniz. Bir ring buffer işinizi görecektir. Benzer sorun stream tcp bağlantılarında da yaşanır. Belki de bir başlangıç bitiş karakteri vardır gelen, o zaman ona göre ayırırsınız.


Kolay gelsin.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

yardımlarınız için teşekkürler. bir deneyim inşallah olur.
Cevapla