Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Seri porttan gelecek cevabi beklemek
#1
Merhaba

Nrcomm bileseni ile seri porta 
Nrcomm1.sendstring('ac')
Komutunu gonderiyorum cihazin cevap suresi 1.5 ile 45 sn arasi oluyor . Cihaz normal calisiyor.
 Ben send string komutundan sonra cihazin bitti cevabini beklemem gerekiyor.

Bu bekleme isini hangi yontemle yapmaliyim?

-timer icine bi kod yazip terminal olarak kullandigim mememonun surekli son satirini mi kontrol etmeliyim yada listbox

- nrcomm bileseninin after receive eventi icine mi bi seyler yazmaliyim . Gelen cevapdan sonra tekrar komut gondermem gerekiyor seri port araciligiyla.

Ya da siz ne tavsiye dersiniz ? 
Degerli fikirlerinizi duymak isterim. Iyi calismalar.
(Klavyem ingilizce)
Cevapla
#2
Daha yeni buna benzer konular konuşuldu forumda biraz aratın ayrıca farklı componetlerle bu işler belki daha kolay yapılabilir
http://www.delphican.com/showthread.php?...t=AsyncPro
araştırın çözüm bulamazsanız yine yardımcı olmaya çalışırız
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#3
(07-02-2020, Saat: 11:55)41linea41 Adlı Kullanıcıdan Alıntı: Merhaba

Nrcomm bileseni ile seri porta 
Nrcomm1.sendstring('ac')
Komutunu gonderiyorum cihazin cevap suresi 1.5 ile 45 sn arasi oluyor . Cihaz normal calisiyor.
 Ben send string komutundan sonra cihazin bitti cevabini beklemem gerekiyor.

Bu bekleme isini hangi yontemle yapmaliyim?

-timer icine bi kod yazip terminal olarak kullandigim mememonun surekli son satirini mi kontrol etmeliyim yada listbox

- nrcomm bileseninin after receive eventi icine mi bi seyler yazmaliyim . Gelen cevapdan sonra tekrar komut gondermem gerekiyor seri port araciligiyla.

Ya da siz ne tavsiye dersiniz ? 
Degerli fikirlerinizi duymak isterim. Iyi calismalar.
(Klavyem ingilizce)

@adelphiforumz dediği gibi farklı bileşenlerle daha kolay ve hızlı ilerlersiniz. NRCOMM önceden oldukça fazla test ettim. Bazı bileşenleri güzel ama ben fazla randıman alamadım (sanayi de de test ettim). TurboPower ve/veya TComPort bileşenleri oldukça sağlam çalışıyor. Her ikisininde çalışma mantığı aynı ve direk arka planlarda Windows API leri ile Aygıt Yöneticisinden besleniyorlar. 
ComDataPacket bileşenini görevi sadece sadece sizin şartlarınıza göre (BOYUT, İLK, SON karakter şartları gibi) veri filtreleme ve/veya yakalama işlemleri gerçekleşiyor ve Label1.Caption := Str; diye basit bir kodlama ile ALIP işleyebilirsin. Bununla birlikte BU FORUMDA ilerleyen konularda görseli bol örnekler yazacağım inşaallah.
Teknik Öğretmen
Bilgisayar Formatörü
WWW
Cevapla
#4
(07-02-2020, Saat: 12:59)adelphiforumz Adlı Kullanıcıdan Alıntı: Daha yeni buna benzer konular konuşuldu forumda biraz aratın ayrıca farklı componetlerle bu işler belki daha kolay yapılabilir
http://www.delphican.com/showthread.php?...t=AsyncPro
araştırın çözüm bulamazsanız yine yardımcı olmaya çalışırız

(09-02-2020, Saat: 12:57)guverdik Adlı Kullanıcıdan Alıntı:
(07-02-2020, Saat: 11:55)41linea41 Adlı Kullanıcıdan Alıntı: Merhaba

Nrcomm bileseni ile seri porta 
Nrcomm1.sendstring('ac')
Komutunu gonderiyorum cihazin cevap suresi 1.5 ile 45 sn arasi oluyor . Cihaz normal calisiyor.
 Ben send string komutundan sonra cihazin bitti cevabini beklemem gerekiyor.

Bu bekleme isini hangi yontemle yapmaliyim?

-timer icine bi kod yazip terminal olarak kullandigim mememonun surekli son satirini mi kontrol etmeliyim yada listbox

- nrcomm bileseninin after receive eventi icine mi bi seyler yazmaliyim . Gelen cevapdan sonra tekrar komut gondermem gerekiyor seri port araciligiyla.

Ya da siz ne tavsiye dersiniz ? 
Degerli fikirlerinizi duymak isterim. Iyi calismalar.
(Klavyem ingilizce)

@adelphiforumz dediği gibi farklı bileşenlerle daha kolay ve hızlı ilerlersiniz. NRCOMM önceden oldukça fazla test ettim. Bazı bileşenleri güzel ama ben fazla randıman alamadım (sanayi de de test ettim). TurboPower ve/veya TComPort bileşenleri oldukça sağlam çalışıyor. Her ikisininde çalışma mantığı aynı ve direk arka planlarda Windows API leri ile Aygıt Yöneticisinden besleniyorlar. 
ComDataPacket bileşenini görevi sadece sadece sizin şartlarınıza göre (BOYUT, İLK, SON karakter şartları gibi) veri filtreleme ve/veya yakalama işlemleri gerçekleşiyor ve Label1.Caption := Str; diye basit bir kodlama ile ALIP işleyebilirsin. Bununla birlikte BU FORUMDA ilerleyen konularda görseli bol örnekler yazacağım inşaallah.

Cevaplarınız için teşekkür ederim. Komponent konusundaki uyarınızı dikkate alıp turbo power componentlerini deneyeceğim.
Benim esas yardıma ihtiyaç duyduğum nokta, Veriyi comdan gönderdikten sonra cevap bekleyip ardından sırasıyla diğer komutu göndermem gerekiyor. Cevap süresi 2 sn ile 45 sn arası bir süre.

Bu süre içinde sürekli cihazdan gelen cevabı kontrol etmemm gerekiyor. Beklaediğim cevap gelir gelmez tekraar yeni bir komut göndermeliyim. Bu bekleme kontrol işlemini Timer ile mi yapmlaıyım yada başka bir yöntem.
While döngüsü içine sürekli veri gelip gelmediğini 250 ms bir kontrol etmekte mantıklı geldi. Timer gibi olacak.

Burda tecrübelerinizden faydalanmak isterim. Cihaz komutla gönderilen iş bittikten sonra "end" cevabını göndriyor.
Cevabı sürekli olarak kontrol edip hemen ardından diğer komutu göndermeliyim.
Cevapla
#5
(09-02-2020, Saat: 21:22)41linea41 Adlı Kullanıcıdan Alıntı:
(07-02-2020, Saat: 12:59)adelphiforumz Adlı Kullanıcıdan Alıntı: Daha yeni buna benzer konular konuşuldu forumda biraz aratın ayrıca farklı componetlerle bu işler belki daha kolay yapılabilir
http://www.delphican.com/showthread.php?...t=AsyncPro
araştırın çözüm bulamazsanız yine yardımcı olmaya çalışırız

(09-02-2020, Saat: 12:57)guverdik Adlı Kullanıcıdan Alıntı: @adelphiforumz dediği gibi farklı bileşenlerle daha kolay ve hızlı ilerlersiniz. NRCOMM önceden oldukça fazla test ettim. Bazı bileşenleri güzel ama ben fazla randıman alamadım (sanayi de de test ettim). TurboPower ve/veya TComPort bileşenleri oldukça sağlam çalışıyor. Her ikisininde çalışma mantığı aynı ve direk arka planlarda Windows API leri ile Aygıt Yöneticisinden besleniyorlar. 
ComDataPacket bileşenini görevi sadece sadece sizin şartlarınıza göre (BOYUT, İLK, SON karakter şartları gibi) veri filtreleme ve/veya yakalama işlemleri gerçekleşiyor ve Label1.Caption := Str; diye basit bir kodlama ile ALIP işleyebilirsin. Bununla birlikte BU FORUMDA ilerleyen konularda görseli bol örnekler yazacağım inşaallah.

Cevaplarınız için teşekkür ederim. Komponent konusundaki uyarınızı dikkate alıp turbo power componentlerini deneyeceğim.
Benim esas yardıma ihtiyaç duyduğum nokta, Veriyi comdan gönderdikten sonra cevap bekleyip ardından sırasıyla diğer komutu göndermem gerekiyor. Cevap süresi 2 sn ile 45 sn arası bir süre.

Bu süre içinde sürekli cihazdan gelen cevabı kontrol etmemm gerekiyor. Beklaediğim cevap gelir gelmez tekraar yeni bir komut göndermeliyim. Bu bekleme kontrol işlemini Timer ile mi yapmlaıyım yada başka bir yöntem.
While döngüsü içine sürekli veri gelip gelmediğini 250 ms bir kontrol etmekte mantıklı geldi. Timer gibi olacak.

Burda tecrübelerinizden faydalanmak isterim. Cihaz komutla gönderilen iş bittikten sonra "end" cevabını göndriyor.
Cevabı sürekli olarak kontrol edip hemen ardından diğer komutu göndermeliyim.

Timer ile yaparsan pek işin içinden çıkamazsın.

Anladığım kadarı ile cihaza bir komut gönderiyorsun;

ComPort1.WriteStr('D' + #13#10);

bunun sonucu olarak ta oradan end diye bir cevap bekliyorsun.

TComDataPacket (TComPort bileşenini kurduğunu varsayıyorum) bileşeninin StartString property' sine end yazılır ve size kısmına 3 (byte-karakter) yazılırsa, her 20 ms de bu cevabı sürekli kontrol eder, sanki TIMER varmış gibi. TComDataPacket bileşenini OnPacket olayına;

public // altında
BILGI: String;

 
if Str = 'end' then 
begin
  BILGI := 'end';// Gelen bilgi yakalanır..  
  ComPort1.WriteStr('LED YAK' + #13#10); //Bilgi yakalanmış sa LED YAK bilgisini cihaza gönder..
end;


Daha detaylı örnek proje ile cevap yazmak isterdim ama, GÖMÜLÜ SİSTEM forumunda belli bir MÜFREDATA göre hareket ediyorum. Öncelikle görsel programlama ortamındaki bileşenlerin kullanımlarını, arkasından SERİ PORT (USB) uygulamalarını vermeye çalışacağım.
Teknik Öğretmen
Bilgisayar Formatörü
WWW
Cevapla
#6
@41linea41 Turbopower paketlerinde siz bir veriyi gönderdikten sonra bir şey yapmanıza gerek yok
Gelmesini beklediğiniz paket yapısını TApdDataPacket nesnesine tanımladıktan sonra bu nesnenin OnPAcket yada OnStringPacket kısmına gelen veriyi alıp kullanmanız kalacaktır.

eğer gönderimler arası zamanlama tererdütleri yaşarsanız paket karışıklıkları olmaması adına bunun içinde global bir değişken yapısında flagler oluşturarak
gelen giden data uyumunu ayarlayabilirsiniz.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#7
Kullandığınız componentleri bilemem ama işin aslı şöyledir.
Delphi windows uniti içerisinde haberleşme durumu (Communication state) bir record yapı olarak tanımlanmış.
Seri porta bir şeyler yazmak için write file çağrısı yapıp devamında cbInQue deki count sayısına bakmalısınız.

Comstate

  _COMSTAT = record
   Flags: TComStateFlags;
   Reserved: array[0..2] of Byte;
   cbInQue: DWORD;
   cbOutQue: DWORD;

Sorgulama fonksiyonunuz aşağıdaki gibi olmalıdır

function TSerialConnection.ReadStringWithTimeOut(const Count: integer;
 const TimeOut: cardinal): string; //Timeout süresi 1 saniye için * 1000 
var
 T: cardinal;
begin
 Result := '';
 if Count = 0 then Exit;
 T := GetTickCount;
 repeat
   if Comstat.cbInQue >= Count then //Comstate gelen veri buffer adeti ile istenilen veri adeti karşılaştırması
   begin
     Result := ReadString(Count);
     Exit;
   end;

   if GetTickCount - T > TimeOut then // Zaman aşımı kontrolü
     Exit;

   Sleep(10);
 until False;
end;
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...





Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  #4 USCO API ile SERİ PORT Kontrol guverdik 2 2.767 01-06-2020, Saat: 21:08
Son Yorum: guverdik
  Multimetreden Seri Port Aracılığı ile Bilgi Okuma guverdik 0 1.506 12-02-2020, Saat: 09:31
Son Yorum: guverdik



Konuyu Okuyanlar: 1 Ziyaretçi