Ethernet Kartına Bilgi Gönderen Cihazla Haberleşme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Ethernet Kartına Bilgi Gönderen Cihazla Haberleşme
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.
Ö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
www.polisoft.com.tr
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 


Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Ozaman Seriport programlamadan daha kolay bir olay gündemde diyebilirmiyiz peki Recep abi?
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
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ı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
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
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ı..
Belki çok daha basit bir şey.. 


Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
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.
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.
@cozturk ,
Socket workbench programından birazcık detaylı bahsedebilirmisiniz, component gibi bişiymi acaba?
Socket workbench programından birazcık detaylı bahsedebilirmisiniz, component gibi bişiymi acaba?
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
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.
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.
@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.
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
www.polisoft.com.tr
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:

öncelikle cihazın data yapısını bilmeniz gerekiyor.edit1'e veri alma komutu yazıyorsunuz.
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:

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.