TComport Component Zamanaşımı Sorunu Hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen yusuf simsek »

Sayın Üstadlarım,

Sabit telefon hattından gelen çağrıları dinleyip Telefon Numarası yakalayan Modem cihazı ile iletişim sağlamak için [ TComport ] ( https://sourceforge.net/projects/compor ... p_redirect ) componenti kullanıyorum...

PC mesai saatleri içerisinde aktif kullanımda, Modem - PC ile sürekli bağlı durumda...

Sorunum :
1 - ) Modem ile PC bağlantısı kesildiğinde ( kablo çıkarıldığında ) Port kilitleniyor ve PC yeniden başlatılana kadar PC - Modem bağlantısı sağlanamıyor...

2 - ) Belli bir süre sonra PC ile Modem iletişimi kopuyor, ( Telefona çağrı geldiğinde Cihaz Çağrıyı yakalayıp LCD ekran üzerinde gösteriyor, ancak PC ile iletişim koptuğu için PC de numara görüntülenemiyor...


Sorunların çözümü ile ilgili çözüm önerisi ya da farklı bir SeriPort Component i tavsiye edebilirseniz memnun olurum.

Saygılarımla
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
boreas
Üye
Mesajlar: 120
Kayıt: 05 Tem 2007 12:39
Konum: Ankara

Re: TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen boreas »

https://www.ararat.cz/synapse/doku.php
adresinde synaser diye bir kitaplık var ve süper bir kitaplık. Dediğin component sıkıntılı usb-seri portları tanımıyor verdiğim linkdeki kitaplığı şiddetle öneririm.
....
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen yusuf simsek »

Teşekkür ederim @BOREAS, hemen inceliyorum...

Testler tamamlandığında bilgi vereceğim
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen ertank »

Merhaba,

Daha önce ücretli olan ve firma kapandıktan sonra kaynak kodları yayınlanan ve ücretsiz olarak temin edilebilen aşağıdaki bileşenleri tavsiye edebilirim.

Kod: Tümünü seç

http://tpapro.sourceforge.net/ApdComPort.html
1- Bu bileşenler içinde Modem ışıklarını okuyabildiğiniz bir bileşen de mevcuttur (TAdpComPort -> TAdpSLController -> TAdpStatusLight). Bağlantı normal iken ışıklardan hangisi yanıyor, bağlantı koptuğu zaman hangisi sönüyor kontrol edip bağlantı koptuğu zaman bileşenin bağlantısını kapatmayı deneyebilirsiniz.

2- Bu sorun emin olmamakla birlikte 1 numaralı sorun ile benzerlik gösteriyor. Acaba kabloda temassızlık var, siz bunun farkında değilsiniz ve anlık olarak bağlantı kopması mı yaşıyorsunuz? Diğer taraftan donanım ile ilgili olabilecek; bağlantı kurduğunuz cihaz ile ilgili bir sorun mu var? Ya da kullanılan bilgisayarın COM port sorunu olabilir. Hatta kullanılan kablonun belli bir noktasında kıvrılmalar vb sebepli incelme ve dolayısıyla temassızlık olabilir mi gibi birçok soru akla gelebiliyor.

Sorunların bir başka çözümü veri geldiği zaman iletişim kurup işlem bittiğinde port bağlantısını kapatmak olabilir. Tabi bunu ancak iletişim kurulan cihaz destekliyor ise yapabilirsiniz.

Sorun tespiti için yine TAdpComPort bileşeninin otomatik LOG tutma özelliklerini kullanmanız mümkün olabilir. Logging, LogSize, LogName parametrelerini kullanarak bağlantı koptuğunu görmek mümkün olabilir.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen yusuf simsek »

@BOREAS, @ERTANK

Öncelikle mesajlar için tekrar teşekkür ederim, Yoğunluktan dolayı ancak fırsat bulabildim...

Componentleri indirdim,

@BOREAS , kütüphaneyi kullanmayı tam olarak beceremedim,

@ERTANK, kurulumu gerçekleştirdim, incelemeye devam ediyorum... Ancak DEMO programlar eski versiyolara ait olduğundan çalışmıyorlar... Mevcut dökümanı inceleyerek Component hakkında fikir saibi olmaya çalışıyorum...

Biraz yol aldıktan sonra tekrar bilgi vereceğim...

Süreci hızlandırmak adına sizlerden rica etsem bağlantı ve iletişim ile ilgili küçük kod blokları paylaşabilir misiniz?
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen ertank »

Aşağıdaki kod Com portu açmak için örnek olarak kullanılabilir. Bu parametreler tasarım zamanında Object Inspector üzerinden de ayarlanabilirler.

Kod: Tümünü seç

ApdComPort1.Baud := 9600;
ApdComPort1.DataBits := 8;
ApdComPort1.StopBits := 1;
AdpComPort1.ComNumber := 0; // COM1
ApdComPort1.Parity := pNone;
ApdComPort1.DTR := True;
ApdComPort1.RTS := True;
ApdComPort1.AutoOpen := False;
ApdComPort1.Open     := True;
Aşağıdaki kod karakter veya metin olarak bilgi göndermek için kullanılabilir.

Kod: Tümünü seç

ApdComPort1.PutChar(Chr(32));
ApdComPort1.PutString('METIN BILGI');
Bileşeni bilgi okumak için kullanmadım. Ancak OnTriggerData() olayının bu iş için kullanılabileceğini düşünüyorum.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: TComport Component Zamanaşımı Sorunu Hakkında

Mesaj gönderen yusuf simsek »

Sayın Üstadlara verdiği değerli fikirlerden dolayı çok teşekkür ederim.

Sorunumuzu Cihaz yazılımında ve component değişikliği yaparak çözdük.

PC Yazılımından - Cihaza ENTER [ #13 ] gönderiyoruz ve Cİhazımız da bize yanıt veriyor... Bu sayede cihazla iletişimimiz devam ediyor mu kontrol ediyoruz...

PC yazılımında da Apro Componenti kullandık...

http://tpapro.sourceforge.net/ApdComPort.html

ApdComPort Componenti OnTriggerAvail olayı ile cihazdan gelen veriyi okuduk...

Kod: Tümünü seç

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  C: AnsiChar;
begin
  while Count > 0 do
    begin
      Dec(Count);
      C := apdComPort1.GetChar;
      if C in [#32..#126, #10, #13] then  // Bunların dışında gelen verileri okumamak için...
      begin
          sBuffer := sBuffer + C; 
          
          if Pos('#GTS-CALLERID;', sBuffer ) > 0 then
            begin
              sBuffer := StringReplace( sBuffer, '#GTS-CALLERID;', '', [] );
              TimerOtoBaglanTimer( nil );
            end;

      end;
    end;
end;
Aktif olan Portları taramak için

Kod: Tümünü seç

procedure TForm1.btnRegistryClick(Sender: TObject);
var
  reg: TRegistry;
  st: Tstrings;
  i: Integer;
begin
  Memo1.Lines.Clear;

  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.OpenKey('hardware\devicemap\serialcomm', False);
    st := TstringList.Create;
    try
      reg.GetValueNames(st);
      for i := 0 to st.Count - 1 do
        Memo1.Lines.Add(reg.Readstring(st.strings[i]) + ' - '+ TimeToStr( Time ) );
    finally
      st.Free;
    end;
    reg.CloseKey;
  finally
    reg.Free;
  end;
end;
Delphi7 için çalışır hali
ModemDemo.rar
Modem Demo
(260.64 KiB) 96 kere indirildi

Yardım ve fikirler için tekrar teşekkür ederiz.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Cevapla