comportla başım dertte
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
comportla başım dertte
bir rs232 portundan kart okuyacağım vede bana gönderilen dokümanda bu işi yapman için bunları yazmalısın demiş arkadaş.
Modül ile haberleşme “9600,N,8,1” 9600 baud,No Parity,8 bit,1 Stop biti şeklindedir.
Haberleşme STX(02h) ile başlar,ETX(03h) ile biter.STX(02h) den sonraki byte kendisinden sonra kaç byte gönderileceğini ifade eder.
STX = 02H
ETX = 03H
NAK = 15H
ACK = 06H
BN = Block Number
Modül Kart Okudumu Sormak İçin (31h):
Modül kartı okuyup okumadığını sormak için bu komut kullanılır.
Sorgu :
STX 02h 31h ETX
Modül Cevabı (Kart okundu ise):
STX 06h 31h ID0 ID1 ID2 ID3 ETX
Modül Cevabı (Kart okunmadı ise):
STX 03h 31h 00h ETX
Block Okuma (32h):
Kart üzerindeki 16 byte’lık block okumak için bu komut gönderilir.BN=Block Number
Sorgu:
STX 07h 32h ID0 ID1 ID2 ID3 BN ETX
Cevap:
STX 12h 32h D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ETX
Komut anlaşılmadı yada uygulanamadı ise:
Cevap:
STX 03h 32h NAK ETX
Block Yazma (33h):
Kart üzerindeki 16 byte’lık block yazmak için bu komut gönderilir.BN=Block Number
Sorgu:
STX 15h 33h ID0 ID1 ID2 ID3 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ETX
Cevap:
STX 12h 33h D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ETX
Komut anlaşılmadı yada uygulanamadı ise:
Cevap:
STX 03h 33h NAK ETX
burada şayet ben 1. olarak kart okundumu, sonra 2. ve 3. basamkları yapmak istersem nasıl bir code yazmam gerekiyor daha önce comport konusunda delphide bir deneyimim olmadı. Bu arada yapacağıız yardım esnasında comport componentini kullanacağım diye bir zaruri ihtiyacım yok sizlerinde daha önce kullandığınız componentlerle yapılabilecekse onlarlada örnek verebilirsiniz. sonuç olarak hangi komponentle verirseniz bende o komponenti öğrenip projeye devam edeceğim.
şayet bana bu konuda sadece 1 er kısa örnek verebilirseniz bu işlemleri nasıl yapabileceğim konusunda sanıyorum ki bundan sonra rs232 den okuma / yazma konularında bilinçli bir şekilde code devam ettirebileceğim.
sağlık, başarı ve mutluluk dileklerimle...
Modül ile haberleşme “9600,N,8,1” 9600 baud,No Parity,8 bit,1 Stop biti şeklindedir.
Haberleşme STX(02h) ile başlar,ETX(03h) ile biter.STX(02h) den sonraki byte kendisinden sonra kaç byte gönderileceğini ifade eder.
STX = 02H
ETX = 03H
NAK = 15H
ACK = 06H
BN = Block Number
Modül Kart Okudumu Sormak İçin (31h):
Modül kartı okuyup okumadığını sormak için bu komut kullanılır.
Sorgu :
STX 02h 31h ETX
Modül Cevabı (Kart okundu ise):
STX 06h 31h ID0 ID1 ID2 ID3 ETX
Modül Cevabı (Kart okunmadı ise):
STX 03h 31h 00h ETX
Block Okuma (32h):
Kart üzerindeki 16 byte’lık block okumak için bu komut gönderilir.BN=Block Number
Sorgu:
STX 07h 32h ID0 ID1 ID2 ID3 BN ETX
Cevap:
STX 12h 32h D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ETX
Komut anlaşılmadı yada uygulanamadı ise:
Cevap:
STX 03h 32h NAK ETX
Block Yazma (33h):
Kart üzerindeki 16 byte’lık block yazmak için bu komut gönderilir.BN=Block Number
Sorgu:
STX 15h 33h ID0 ID1 ID2 ID3 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ETX
Cevap:
STX 12h 33h D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ETX
Komut anlaşılmadı yada uygulanamadı ise:
Cevap:
STX 03h 33h NAK ETX
burada şayet ben 1. olarak kart okundumu, sonra 2. ve 3. basamkları yapmak istersem nasıl bir code yazmam gerekiyor daha önce comport konusunda delphide bir deneyimim olmadı. Bu arada yapacağıız yardım esnasında comport componentini kullanacağım diye bir zaruri ihtiyacım yok sizlerinde daha önce kullandığınız componentlerle yapılabilecekse onlarlada örnek verebilirsiniz. sonuç olarak hangi komponentle verirseniz bende o komponenti öğrenip projeye devam edeceğim.
şayet bana bu konuda sadece 1 er kısa örnek verebilirseniz bu işlemleri nasıl yapabileceğim konusunda sanıyorum ki bundan sonra rs232 den okuma / yazma konularında bilinçli bir şekilde code devam ettirebileceğim.
sağlık, başarı ve mutluluk dileklerimle...
kıymetli rsimsek hocam öncelikle bu mesaj için sabah dan beridir bekliyordum ama dediğiniz gibi hatta isttaistiklere bakacak olursanız ptesiden beridir comport veya serial diye bırakın delphiforumu googledan bile 40 çeşit aratmışımdır fakat konuyu bir türlü çözemedim burada sanırım beni bu çıkmazdan tek kurtaracak olan çözüm bir arkadaşın çıkıpda kazım bak senin yolladığın bilgiye bakınca xxx kodu yazarsan okursun vede şu yyy kodlada okursun diyebilmesini çok ama çok arzu ediyordum. dediğiniz gibi forumdan baktım fakat henüz çözüme ulaşamadım. tüm arkadaşlardan yardımlarını rica ediyorum.
Kazim ATES
Kazim ATES
s.a.
öncelikle hangi bileşenle bağlanıyorsan o bileşenin özelliklerini ayarlayacaksın.
sonra iletişime başlamak için portu open edeceksin. (kullandığın bileşenin open komutu vardır.)
sonra porta komutları göndereceksin.
kullandığın bileşenin read ve write komutları vardır. (bileşenin yanında örneklerde vardır.)
önce kart okuyuca yapmak istediğin işlemi göndereceksin. (write ile) sonra da read komutu ile kart okuyucunun cevabını alacaksın.
göndereceğin komutlar string olacak.
kodları atmasyon yazdım. kullandığın bileşenin özelliklerine göre read ve write komutlarını kullanmalısın.
arada beklemek için sleep vs bi fonks. kullanabilirsin..
portu kullanmaya başlamadan önce porttaki çöpleri temizlemen gerekebilir. flushrx ,flushtx gibi komutları olabilir. veya gelen değeri işleyip ona göre sonuç çıkarman gerekebilir.
gönderdiğim kodlarda stx,etx vs. yerine yerine onların rakamsal karşılıklarını yazman lazım.
o komutlar kart okuyucuya hangi işlemi yapacağını söylüyor.
kolay gelsin.
öncelikle hangi bileşenle bağlanıyorsan o bileşenin özelliklerini ayarlayacaksın.
hangi prota bağlı ise onu seçeceksin.“9600,N,8,1” 9600 baud,No Parity,8 bit,1 Stop biti şeklindedir.
sonra iletişime başlamak için portu open edeceksin. (kullandığın bileşenin open komutu vardır.)
sonra porta komutları göndereceksin.
kullandığın bileşenin read ve write komutları vardır. (bileşenin yanında örneklerde vardır.)
önce kart okuyuca yapmak istediğin işlemi göndereceksin. (write ile) sonra da read komutu ile kart okuyucunun cevabını alacaksın.
göndereceğin komutlar string olacak.
Kod: Tümünü seç
bilesen.open;
bilesen.write('STX 02h 31h ETX');
kartın işlem yapıp cevap vermesi için biraz beklemen lazım.
sonuc:=bilesn.read;
if sonuc='STX 06h 31h ID0 ID1 ID2 ID3 ETX ' then showmessage('kart okundu' else
if sonuc='STX 03h 31h 00h ETX ' then showmessage('kartokunamadı')
else showmessage('bilinmeyen durum');
vsvsvsv
bilesen.close;
arada beklemek için sleep vs bi fonks. kullanabilirsin..
portu kullanmaya başlamadan önce porttaki çöpleri temizlemen gerekebilir. flushrx ,flushtx gibi komutları olabilir. veya gelen değeri işleyip ona göre sonuç çıkarman gerekebilir.
gönderdiğim kodlarda stx,etx vs. yerine yerine onların rakamsal karşılıklarını yazman lazım.
o komutlar kart okuyucuya hangi işlemi yapacağını söylüyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kod: Tümünü seç
bilesen.open;
bilesen.write('STX 02h 31h ETX');
kartın işlem yapıp cevap vermesi için biraz beklemen lazım.
sonuc:=bilesn.read;
if sonuc='STX 06h 31h ID0 ID1 ID2 ID3 ETX ' then showmessage('kart okundu' else
if sonuc='STX 03h 31h 00h ETX ' then showmessage('kartokunamadı')
else showmessage('bilinmeyen durum');
vsvsvsv
bilesen.close;
öncelikle mesajınız için teşekkür ederi fakat anlayamadığım vede delphininde anlayamadığı bir konu var orası da write.str(buffer,integer) şeklinde olması gerekiyor şeklinde olduğundan dolayı
comport1.write('STX 02h 31h ETX'); komutunda eksiklik olduğunu söylüyor bu durumda bu problem nasıl düzenlenmelidir?
sağlık, başarı ve mutluluk dileklerimle...
comporta hexadecimal değer gönderimi
evet daha önce ders232 ye veri seri porta nasıl hexadecimal kod gönderebiliriz demiştik bunun bir cevabı şu şekildeymiş en nihayet göndermeyi başardım.
comport1.open;
comport1.writestr(chr($02)+chr($02)+chr($31)+chr($03));
burada comport1 e 02h 02h 31h ve 03h değerlerini gönderiş olduk vede 02 start bit ve 03 ise stop bit konumunda kullanıldılar.
bundan sonra ikinci adım ise seri portdan nasıl okuyacağımız ve okunan değerin hexadecimal olarak nasıl labelda gösterileceği konusunda bu konuda yardımcı olabilirmisiniz.
sağlık, başarı ve mutluluk dileklerimle...
comport1.open;
comport1.writestr(chr($02)+chr($02)+chr($31)+chr($03));
burada comport1 e 02h 02h 31h ve 03h değerlerini gönderiş olduk vede 02 start bit ve 03 ise stop bit konumunda kullanıldılar.
bundan sonra ikinci adım ise seri portdan nasıl okuyacağımız ve okunan değerin hexadecimal olarak nasıl labelda gösterileceği konusunda bu konuda yardımcı olabilirmisiniz.
sağlık, başarı ve mutluluk dileklerimle...
comporta hexadecimal değer gönderimi
evet daha önce ders232 ye veri seri porta nasıl hexadecimal kod gönderebiliriz demiştik bunun bir cevabı şu şekildeymiş en nihayet göndermeyi başardım.
comport1.open;
comport1.writestr(chr($02)+chr($02)+chr($31)+chr($03));
burada comport1 e 02h 02h 31h ve 03h değerlerini gönderiş olduk vede 02 start bit ve 03 ise stop bit konumunda kullanıldılar.
bundan sonra ikinci adım ise seri portdan nasıl okuyacağımız ve okunan değerin hexadecimal olarak nasıl labelda gösterileceği konusunda bu konuda yardımcı olabilirmisiniz.
sağlık, başarı ve mutluluk dileklerimle...
comport1.open;
comport1.writestr(chr($02)+chr($02)+chr($31)+chr($03));
burada comport1 e 02h 02h 31h ve 03h değerlerini gönderiş olduk vede 02 start bit ve 03 ise stop bit konumunda kullanıldılar.
bundan sonra ikinci adım ise seri portdan nasıl okuyacağımız ve okunan değerin hexadecimal olarak nasıl labelda gösterileceği konusunda bu konuda yardımcı olabilirmisiniz.
sağlık, başarı ve mutluluk dileklerimle...