Ethernet Kartına Bilgi Gönderen Cihazla Haberleşme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Ethernet Kartına Bilgi Gönderen Cihazla Haberleşme

Mesaj gönderen vkamadan »

Merhaba,
Özel olarak programlanmış bir PLC devreli cihaz var, sicaklık ve kimyasal madde analizi gibi bilgiler gönderiyor neyse ,benim bu bilgileri almam ve hatta özel bilgiler göndermem lazım, bu konuda çok tecrübesizim,
öncelikle bu cihazla bilgisayar arasındaki iletişimi bir TCP/IP ağı gibimi değerlendireceğim, yani Indy nin Client Server bileşenlerinimi kullanmalıyım yada nasıl haberleşmeleyim teorik olarak fikirlerinize ihtiyacım var.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Benzer bir programı çapraz (cross) kablo ile bağlayıp ağ oluşturmuştum. Cihaza bir IP atanmıştı. Tabi hub-switch üzerinden bağlanacaksa normal kablo olmalı :!: Gerekli bilgileri ve yönlendirme cihazın kendi programı tarafından yapılıyordu. Çok fazla detayına girmem gerekmedi. Ethernet olayı var ise bir ağdan söz etmek gerekiyor. Ondan sonra da kodlama kısmı ile neyi nasıl gönderdiğini ve cihazı dinleme olayına kalıyor.. Dediğin gibi socket işi devreye girecek :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Ozaman Seriport programlamadan daha kolay bir olay gündemde diyebilirmiyiz peki Recep abi?
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Mutlak standart bir arabirim ve protokolü vardır bence onun. Kolay kolay kimse standart dışı bişi yapmaz, koskoca IEEE ne işe yarıyor :)
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

undefined yazdı:Mutlak standart bir arabirim ve protokolü vardır bence onun. Kolay kolay kimse standart dışı bişi yapmaz, koskoca IEEE ne işe yarıyor :)
Evet daha önce hiç benzer bir uygulama üzerinde çalışmadığım için biraz endişelendim, dediğiniz gibi portokolünü ve kullandığı portu felan öğrenip denemeler yapayım, merak ettiğim benim uygulamam Client mi oluyor bu durumda yoksa Server mı
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Dediğim gibi pek bir araştırmam olmadı. Anladığım kadarıyla biribirini dinleyen iki yapı olmalı. Belki ağ üzerinde bir web browser gibi de düşünülebilir.. Belli portlara gelen isteklere göre davranacak şekilde.. Ya da socket mantığı ile ağı dinleyen ve gelen değerlere göre davranan bir yapı.. :roll: Belki çok daha basit bir şey.. :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Socket Workbench sizin ihtiyacınız olan programdır.

Portları ayarlıyor, bir programın bir cihaza gönderdiği verileri ve karşılıklı gidip gelen verileri başka bir porttan okuyabiliyorusunuz.

Yalnız bu aleti siz yapmadıysanız veya gerekli iletişim bilgilerini resmen size iletmedilerse, daha sonra başka sorunlar çıkabilir. Örneğin 3-5 gün gibi test ettiniz. Programınızda sorun yok. Cihaz ile iletişim mükemmel.

Fakat toplam çalışma saati vs sayılıp 2-3 günde bir başka birşey gönderiliyor olabilir. Eğer bu durumda karşı taraftan uygun cevap alınamazsa cihaz kilitlenebilir. veya başka birşey yapabilir.

İşte bu gibi durumları deneme yöntemiyle tesbit etmek sağlıklı görünmüyor.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

@cozturk ,
Socket workbench programından birazcık detaylı bahsedebilirmisiniz, component gibi bişiymi acaba?
Volkan KAMADAN
www.polisoft.com.tr
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Komponenet gibi değil. Photoshop gibi diyelim. ama çok güzel yapmışlar.

Bununla yerel olarak web browser, FTP server vs oluşturabilir çok kapsamlı testler yapabilirsiniz.

Diyelim
2 Program haberleşiyor. A ve B portlarını kullanıyorlar.

bunu şöyle ayarlıyoruz

Adan gelen C ye gitsin D den çıkıp Bye gitsin

gibi arada 2 port daha tanımlıyoruz. sonuçta veri gideceği yere yine gidiyor. ama arada başka bir porttan geçtiği için program o bilgileri log edebiliyor.


Socket workbench
http://www.tcpiq.com/tcpIQ/SocketWorkbench/

Cihaz la ilgili komutları buradan gördükten sonra aynı komutları INdy komponentleri ile gönderebilir, aleti hemen çalıştırabilirsiniz. Aletten gelen bilgileri de yorumlayabilirsiniz

Protokol aynı protokolde olsa adam kafasına göe veri gönderiyordur kesin.

Örneğn sıcaklık , nem vs gibi 10 farklı bilgi olsun

S1N2 ...gibi gönderebilir. baytlar arasına hangi veri olduğunu bildiren başka baytlar konmuş olabilir.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

@cozturk
Programı kurdum ve bilgisayarım üzerindeki bir web server ın hareketlerini izlemek için ayarlamaya çalıştım bağlantıları sağladım fakat hiç bir hareket gözlemleyemedim ne bir log (loglama özellikleridnen herşeyi açtım) hiç bir kıpırtı yok basit bir örnek yapılandırmadan bahsedebilirmisiniz rica etsem, teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Ben uzun zaman önce kullanmıştım. şuan kurulu değil. içinde örnek, sihirbaz filan olması lazım. Galiba kendisi yerel sunucu olarak çalışıyor.
içinde port listesi de olması lazım. HTTP, smtp vs ilgili portu seçiyorsunuz.

Korumayı devre dışı bırakmak veya izin vermek gerekir.
Kullanıcı avatarı
dynamo
Üye
Mesajlar: 96
Kayıt: 21 Haz 2005 02:05
Konum: istanbul

Mesaj gönderen dynamo »

TCP/IP üzerinden bir cihazla haberleşme üzerinde çalışmadım.fakat NMUDP komponentinin bu amaçla kullanıldığını biliyorum.

http://www.tommstudio.com/Down.aspx?Typ ... nts&ID=490

adresinden delphi7 için Fastnet paketi indir.Demos klasöründe örnek uygulamaları bulabilirsin.

http://delphi.ktop.com.tw/loadfile.php? ... &CC=189938

adresinde NMUDP komponenti kullanılarak örnek bir uygulama verilmiş.

elimde NMUDP komponenti kullanarak TCP/IP üzerinden cihaz haberleşmesini sağlayan örnek bir uygulamanın kodu:

Resim

Kod: Tümünü seç


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  NMUDP, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    NMUDP1: TNMUDP;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Memo1: TMemo;
    Label2: TLabel;
    NMUDP2: TNMUDP;
    Button2: TButton;
    Label3: TLabel;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: String; Port: Integer);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var Buff:Array[1..4096] of Char;
    I:Integer;
    S:String;
begin
    NMUDP1.RemoteHost:=Edit2.Text;
    S:=Edit1.Text;
    for I:=1 to Length(S) do Buff[I]:=S[I];
    NMUDP1.SendBuffer(Buff,Length(S));
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if Key=13 then Button1.Click;
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  C: array [1..4096] of Char;
  I,Num:Integer;
  S:String;
begin
    S:='';
    if NumberBytes <= 4096 then
    begin
        NMUDP1.ReadBuffer(C, Num);
        for I:=1 to Num do S:=S+C[I];
        Memo1.Text:=Memo1.Text+S;
    end else begin
        Memo1.Lines.Add('Buffer Too Small£¡');
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var Buff:Array[1..4096] of Char;
begin
    //Server IP,port£¬limit  =  192.168.0.7,2000,1
    NMUDP2.RemoteHost:=Edit2.Text;
    Buff[1]:=char($12);
    Buff[2]:=char($34);
    Buff[3]:=char($53);
    Buff[4]:=char($43);
    Buff[5]:=char($0A);
    Buff[6]:=char($01);
    Buff[7]:=char($01);
    Buff[8]:=char($C8);
    Buff[9]:=char($07);
    Buff[10]:=char($D0);
    Buff[11]:=char($01);
    NMUDP2.SendBuffer(Buff,11);
end;

end.
öncelikle cihazın data yapısını bilmeniz gerekiyor.edit1'e veri alma komutu yazıyorsunuz.
Cevapla