ComPortda veri yazma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
ComPortda veri yazma
öncelikle selamlar.
benim sorunum şu ben bir devreyi seri porttan kontrol etmek istiyorum. kartta mikroişlemci var. Ben bilgisayardan 160 - 162 - 164 - 166 gibi değerler göndererek mikro işlemci vasıtası ile elektronik devrede bulunan röleleri kontrol etmem gerekiyor.
Comport bileşenin içindeki örneği kullanarak bir deneyeyim dedim ama başarılı olamadım kendim bir şeyler yazdım ama yine olmadı. comporttun bütün ayarlarını doğru halde yaptım (bana uygun halde). Ama bir türlü komutlar iletilmiyor.
comport bileşinin porta yazma komutu olan ComPort.WriteStr(....); burada .... ola yerlere 160ı girekt yazdığımda iletmesi gerekiyor bence. acaba .... yere direkt değilde başkabir türdemi yazacam veriyi.
bu sorunu nasıl halledebilirim. yardımlarınız için şimdiden teşekkür ederim.
benim sorunum şu ben bir devreyi seri porttan kontrol etmek istiyorum. kartta mikroişlemci var. Ben bilgisayardan 160 - 162 - 164 - 166 gibi değerler göndererek mikro işlemci vasıtası ile elektronik devrede bulunan röleleri kontrol etmem gerekiyor.
Comport bileşenin içindeki örneği kullanarak bir deneyeyim dedim ama başarılı olamadım kendim bir şeyler yazdım ama yine olmadı. comporttun bütün ayarlarını doğru halde yaptım (bana uygun halde). Ama bir türlü komutlar iletilmiyor.
comport bileşinin porta yazma komutu olan ComPort.WriteStr(....); burada .... ola yerlere 160ı girekt yazdığımda iletmesi gerekiyor bence. acaba .... yere direkt değilde başkabir türdemi yazacam veriyi.
bu sorunu nasıl halledebilirim. yardımlarınız için şimdiden teşekkür ederim.
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: ComPortda veri yazma
Çok emin olmamakla birlikte comporta chr(160) gibi göndermeyi bir dene
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: ComPortda veri yazma
Arkadasım aktarım rolu onemli bu konuda hex olarak mı yoksa ascii olarakmı iletim yapcaksın...
comport ayarlarını ayarlaman gerekiyor...
örnegin; baudrate,parity,databits vs..
bu sekilde karsıya bu degeri gonderebilirsin...
kolay gelsin...
comport ayarlarını ayarlaman gerekiyor...
örnegin; baudrate,parity,databits vs..
Kod: Tümünü seç
comport1.port:='COM1'; // burda hangi portu kullanıyorsan onu yaz
comport1.open;
comport1.writestr('160');
kolay gelsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
Re: ComPortda veri yazma
yine olmadı. acaba bu eventlar ile ilgili olabilirmi. okumak için rxchar kullanıyoruz peki comporta komut gönderirken hangi eventtı kullanacaz? her hangi bir butondan göndersek olurmu? yoksa eventmı kullanacaz?
Re: ComPortda veri yazma
arkadasım sorun nedir komutlar mı iletilmiyor yoksa komuta karsılık istediğin olaylar mı gerceklesmiyor?
Butonla gonderebilirsin mesajları,baglantıyı yapar writestr komutu ile gonderebilirsin
Yalnız karsı cihaz mesajları nasıl okuyor veya sana nasıl bi mesaj yolluyor onun formatını bilmen lazım sen '160' olarak yazarsan string olarak gonderirsin belki ascii veya hex e cevirip gondermen gereklidir...
kolay gelsin...
Butonla gonderebilirsin mesajları,baglantıyı yapar writestr komutu ile gonderebilirsin
Yalnız karsı cihaz mesajları nasıl okuyor veya sana nasıl bi mesaj yolluyor onun formatını bilmen lazım sen '160' olarak yazarsan string olarak gonderirsin belki ascii veya hex e cevirip gondermen gereklidir...
kolay gelsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: ComPortda veri yazma
Kullandığın comport bileşeni nedir söylersen belki bir örnek kod gönderebiliriz.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: ComPortda veri yazma
kullandığım bileşen comport. basit bir örnek var ise hem yazma hemde okuma için çok iyi olur. elimde kodlar var işlemceyi göndereceğin. comport bileşenin ayarlarını yaptım ama yinede yok olmuyo. elimde 161,171 ... falan diye kodları göndermem lazım string olarak writestryi kullandım ama işe yaramıyor.
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: ComPortda veri yazma
Arkadaşım kusura bakma fakat senin yazdıklarından çok birşey anlıyamadım.
Comport diyip duruyorsun bu bilesen neyin bileseni uses olarak ne ekliyorsun
yada soruyu birazdaha açayım sen delphi kaç kullanıyorsun ve kullandığın bileşen hangi firmanın bileşeni
Mesela TurboPower, ActivexCom, ActiveComport, Cport, Omron vb. bu objeyi nereden yükledin.
Anladığım kadarı ile comportlar konusunda biraz yenisin eğer öyleyse
Delphi forumlarında TurboPower bileşenlerini arat orada AsynPro olarak bir bileşen grubu var
bunun içindeki comport bileşenlerini kullan oldukça basittir.
Comport diyip duruyorsun bu bilesen neyin bileseni uses olarak ne ekliyorsun
yada soruyu birazdaha açayım sen delphi kaç kullanıyorsun ve kullandığın bileşen hangi firmanın bileşeni
Mesela TurboPower, ActivexCom, ActiveComport, Cport, Omron vb. bu objeyi nereden yükledin.
Anladığım kadarı ile comportlar konusunda biraz yenisin eğer öyleyse
Delphi forumlarında TurboPower bileşenlerini arat orada AsynPro olarak bir bileşen grubu var
bunun içindeki comport bileşenlerini kullan oldukça basittir.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: ComPortda veri yazma
Com porta bilgi yazmak veya okumak için önce portu belirli ayarlara göre kullanıma açman gerekir.
Ayarlamalar:
Bağlantının sağlanacağı com portun numarasını girebileceğin bir parametre bulunur (PortNo,ComPort vb).
Bu parametreye hangi comporttan iletişim kuracaksan onun adını veya numarasını gireceksin (Com1,Com2 veya 1,2 gibi).
BaudRate: 9600(default),19200,115000 vb.Bu özellik genellikle 9600 olarak ayarlanır.
Bazı donanımlar daha düşük hızda,bazıları daha yüksek hızda iletişim kurabilir.
StopBits:sb1BITS(default), sb1HALFBITS, sb2BITS vb. Bu özellik genellikle 1 bit olarak ayarlanır.
DataBits: db5BITS, db6BITS, db7BITS, db8BITS(default) . Bu özellik genellikle 8bit olarak ayarlanır.
Parity: ptNONE(default), ptODD, ptEVEN, ptMARK, ptSPACE vb
Donanım ve yazılım akış denetimi özelliklerini hfNone,sfNone gibi ayarlayarak kapatman veya donanıma göre açman gerekebilir.
Bilgiyi göndermek için:
Bilgi string, byte, integer, stream vb birçok şekilde gönderilip alınabilmektedir. Bu kullanılan bileşene göre değişebilir ancak bilginin string olarak
gönderilip alınması daha kolay olacaktır.
161,171 gibi 1 byte'lık bilgileri string olarak göndermek için:
Gelen bilgileri okumak için:
Bileşende büyük bir ihtimalle RXCount gibi bir özellik bulunur. Bu özellik comportta anlık olarak tampon bellekte birikmiş bilgi uzunluğunu gösterir.
RXCount özelliği kullanarak porttaki veri string değişkene alınabilir.
Ancak okuma ve yazma işlemleri rasgele zamanlarda yapılması kesinlikle doğru olmayacaktır.
Donanım ile haberleşme mutlaka daha önce belirlenmiş zaman dilimlerde düzenli bir şekilde yapılır.
Makinadan bilgi okuma yazma işleminde mutlaka bir master(yönetici/iş akışını başlatan) ve
bir veya daha fazla slave(hizmetçi) bulunur. Master genellikle bilgisayardır.
Özellikle windows işletim sistemi kullanılan makinelerde bilgisayarın slave olarak kullanılması hatalı
olacaktır. Master bir komut ile iletişimi başlatır. İletişim daha önce belirlenmiş bir plana göre
karşılıklı paslaşma şeklinde yapılır. Makine ile bilgisayar ne zaman konuşup ne zaman dinleyeceğini
iyi bilmelidir. Aksi takdirde çakışma oluşur ve iletişim hatalı bir şekilde son bulur.
Ayarlamalar:
Bağlantının sağlanacağı com portun numarasını girebileceğin bir parametre bulunur (PortNo,ComPort vb).
Bu parametreye hangi comporttan iletişim kuracaksan onun adını veya numarasını gireceksin (Com1,Com2 veya 1,2 gibi).
BaudRate: 9600(default),19200,115000 vb.Bu özellik genellikle 9600 olarak ayarlanır.
Bazı donanımlar daha düşük hızda,bazıları daha yüksek hızda iletişim kurabilir.
StopBits:sb1BITS(default), sb1HALFBITS, sb2BITS vb. Bu özellik genellikle 1 bit olarak ayarlanır.
DataBits: db5BITS, db6BITS, db7BITS, db8BITS(default) . Bu özellik genellikle 8bit olarak ayarlanır.
Parity: ptNONE(default), ptODD, ptEVEN, ptMARK, ptSPACE vb
Donanım ve yazılım akış denetimi özelliklerini hfNone,sfNone gibi ayarlayarak kapatman veya donanıma göre açman gerekebilir.
Bilgiyi göndermek için:
Bilgi string, byte, integer, stream vb birçok şekilde gönderilip alınabilmektedir. Bu kullanılan bileşene göre değişebilir ancak bilginin string olarak
gönderilip alınması daha kolay olacaktır.
161,171 gibi 1 byte'lık bilgileri string olarak göndermek için:
Kod: Tümünü seç
writestring(#161#171);
Bileşende büyük bir ihtimalle RXCount gibi bir özellik bulunur. Bu özellik comportta anlık olarak tampon bellekte birikmiş bilgi uzunluğunu gösterir.
RXCount özelliği kullanarak porttaki veri string değişkene alınabilir.
Kod: Tümünü seç
if Comport1.RXCount>0 then
s:=ComPort1.readstring;
Donanım ile haberleşme mutlaka daha önce belirlenmiş zaman dilimlerde düzenli bir şekilde yapılır.
Makinadan bilgi okuma yazma işleminde mutlaka bir master(yönetici/iş akışını başlatan) ve
bir veya daha fazla slave(hizmetçi) bulunur. Master genellikle bilgisayardır.
Özellikle windows işletim sistemi kullanılan makinelerde bilgisayarın slave olarak kullanılması hatalı
olacaktır. Master bir komut ile iletişimi başlatır. İletişim daha önce belirlenmiş bir plana göre
karşılıklı paslaşma şeklinde yapılır. Makine ile bilgisayar ne zaman konuşup ne zaman dinleyeceğini
iyi bilmelidir. Aksi takdirde çakışma oluşur ve iletişim hatalı bir şekilde son bulur.
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: ComPortda veri yazma
birde bana kalırsa port monitor kullan.Portu açıp açamadığını ne gönderdiğini yada gönderemediğini ordan mutlaka takip etmek lazım yoksa hayali bir iş yapıyormuşuz gibi oluyo.
Free Serial Port Monitor benim kullandığım bir program gayet güzel ama dikkat etmek lazım.Bzen makinayı kitliyor resetlemek zorunda kalıyorsun onun için deneme yapmadan önce save olayı kesinlikle önem kazanıyor yoksa yazarsın yazarsın deneme esnasında kitlendimi hiçbirşey işlemiyor bilgisayarını parmaklamak zorunda kalıyorsun..
Kolaygelsin...
Free Serial Port Monitor benim kullandığım bir program gayet güzel ama dikkat etmek lazım.Bzen makinayı kitliyor resetlemek zorunda kalıyorsun onun için deneme yapmadan önce save olayı kesinlikle önem kazanıyor yoksa yazarsın yazarsın deneme esnasında kitlendimi hiçbirşey işlemiyor bilgisayarını parmaklamak zorunda kalıyorsun..
Kolaygelsin...
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
Re: ComPortda veri yazma
arkadaşlar çok teşekkür ederim. Allah razı olsun. sorunumu hallettim.
:):):)

Re: ComPortda veri yazma
@akdatilla, makale gibi yazmışsın tebrikler.
@levbay, millet o kadar dil dökmüş yazmış sende hallettim deyip çıkıyorsun. Nasıl hallettiğini belirtsen çok daha iyi olur.

@levbay, millet o kadar dil dökmüş yazmış sende hallettim deyip çıkıyorsun. Nasıl hallettiğini belirtsen çok daha iyi olur.


Bir kelimenin anlamını öğretsen bile yeter..



Re: ComPortda veri yazma
writestring(#161#171); aradığım kod buymuş
:) ben string ifade gönderiyormuşum ondan kaynaklanıyormuş problemim.
Writestr('161') şeklinde değilde writestr(#161) şeklinde yapmam gerekiyormuş.

Writestr('161') şeklinde değilde writestr(#161) şeklinde yapmam gerekiyormuş.
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: ComPortda veri yazma
yada writestr('í') de olabilirdi aslında yani yazacağın sayının karakter karşılığı.Ek bilgi...
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;