Windows RS232 Haberleşme Uygulaması

Başlatan RcALTIN, 10 Aralık 2009, 15:49:06

RcALTIN

C# ile yaptığım basit ve minik bir uygulama, dolayısıyla .net framework gereksinimi vardır. RF modüllerle ilgili bir projemde donanımları test etmek için oluşturmuştum; belki işinize yarayabilir düşüncesiyle biraz düzenledikten sonra paylaşmaya karar vedim. Eksik, hatalı, düzenlenmesi gereken noktaları var ise belirtmekten çekinmeyiniz...



İndir
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

Digimensch

Dostum güzel bir calisma.
Yanliz bu PIC'e string veya charekter gönderip okumak icin.
Acaba PIC'i prograyabilecek bir örnek yapman mümkünmü yada elinde öyle bir Proje varmi?
Ben daha önce bu sorumu su linkte sormustum.
https://www.picproje.org/index.php/topic,23383&highlight=

Yani yapmak istedigim bir Programlayiciya PIC'i baglayacagiz örnegin en basidinden PIC16F84, ve yazacagimiz Program ile .HEX dosyamizi PIC'e yazacagiz.
Aynen ICPROG veya WINPIC gibi birsey ama cok basit sekli.Simdilik sadece bir PIC icin olsada yeter.
Böyle birsey C# ile yapilabilirmi? yada yapilmis bir örnek varmi?

RcALTIN

Alıntı yapılan: "Digimensch"Dostum güzel bir calisma.
Yanliz bu PIC'e string veya charekter gönderip okumak icin.
Acaba PIC'i prograyabilecek bir örnek yapman mümkünmü yada elinde öyle bir Proje varmi?
Ben daha önce bu sorumu su linkte sormustum.
https://www.picproje.org/index.php/topic,23383&highlight=

Yani yapmak istedigim bir Programlayiciya PIC'i baglayacagiz örnegin en basidinden PIC16F84, ve yazacagimiz Program ile .HEX dosyamizi PIC'e yazacagiz.
Aynen ICPROG veya WINPIC gibi birsey ama cok basit sekli.Simdilik sadece bir PIC icin olsada yeter.
Böyle birsey C# ile yapilabilirmi? yada yapilmis bir örnek varmi?


Evet bu uygulama karakter gönderip-almak için... Eğer yanlış bilmiyorsam seri porttan pic programlaması yapabilmek için direkt olarak seri portun pinlerini kullanmak gerekiyor ki http://hobby_elec.piclist.com/e_pic2_4.htm burada açıklanan şekilde pic'e gerekli komutlar yollanabilsin, benim ise seri port pinleriyle daha önce hiç ilgim olmadı... :(  C# ile pic programlamak benimde uzun süredir ilgi alanımda ancak zaman bulupta seri port üzerine detaylı bir araştırma hiç yapamadım. Eğer iş paralel port ile yapılmak isteniyorsa "inpout32.dll" dosyası kullanılarak paralel portun data pinlerine direkt olarak erişebilirsiniz; ancak bu portta 8 adet data pini, pic'lerde olduğu gibi tek tek değil toplu şekilde kontrol ediliyor:
Tanımlanan port adresine 0 gönderirseniz tüm pinler "0", 1 gönderirseniz yalnızca 1. pin "1", 2 gönderirseniz yalnızca 2. pin "1".... şeklinde hem 1. hemde 2. pinin aynı anda "1" yapılmak istenirse 1+2 yani 3 gönderilmesi gerekiyor.. tüm portları "1" yapmak için ise 255 göndermek gerekli... yani pinler için 1. den 8.ye kadar sırasıyla 1-2-4-8-16-32-64-128 değerleri ilişkili, 7. 8. pini aynı anda "1" konumuna getirmek için 64+128 verileri toplanıp porta 192 gönderilmesi gerekiyor... Paralel port ile bu pic programlama işlemi gerçekleştirilebilir gibi görünüyor ama paralel port ile bu işi çözmek seri portun yanında pekte mantıklı değil gibi, ayrıca söz konusu zamanlamalar milisaniye düzeyinde olunca .net tabanlı c# ne kadar iyi bir tercih olur bilemiyorum...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

Digimensch


Aslinda diger Programlama dilleri ile yapilabiliniyorsa C# ilede yapilabilmeli bence.
Ama hic bir örnek kod bulamadim.
Eger yaparsan bize Proje dosyasini sunarsan sevinirim.

Macera

Güzel çalışma!
Yazılım uyumuda  (Xon xoff handshake) eklersen tam universal olur.
Gönderilecek bilgiyi vede gelen bilgiyide pcdeki dosyayla iliştirirsek o zaman eksik tarafıda kalmaz.
"Art without engineering is dreaming; engineering without art is calculating." -- Steven K. Roberts

ORC

Linki tazeleyebilirmisiniz bizde inceleme sansı bulurduk.. :)

RcALTIN

link yenilendi... Ayrıca ilk mesajda bahsettiğim gibi bu minik ve oldukça basit bir rs232 test uygulamasıdır, fazla şey beklememek gerek  :) Zira .net serialport nesnesini ayarlayıp, eventlerini kullanmaktan başka bir nurmarasıda yok...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

gallavi

Ben Visual Studio 2010 da seri port kullanan bi yazılım geliştirmeye çalışıyorum. Portu açıp data gönderebiliyorum. Bufferda biriken dataları tek seferde okumaya kalkarsam program hata verip kırılıyo siz okuma yapmak için hangi fonksyonu kullandınız bi püf noktası varsa biraz bahsedebilirmisiniz.
DemirHan=gallavi;

fatihinanc

Zaten tek seferde okumak biraz mantığa ters gibi geldi bana. karakter karakter okumayı bir denemelisiniz bence.
byte veya char bir karakter dizisi oluşturun. onun üzerinden tek tek okumayı deneyebilirsiniz.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

RcALTIN

Alıntı yapılan: fatihinanc - 16 Haziran 2010, 11:22:03
Zaten tek seferde okumak biraz mantığa ters gibi geldi bana. karakter karakter okumayı bir denemelisiniz bence.
byte veya char bir karakter dizisi oluşturun. onun üzerinden tek tek okumayı deneyebilirsiniz.

serialport nesnesinin eventlerinden olan datareceived kısmını oluşturuyoruz, daha sonra blok içerisinde serialPort1.ReadExisting() metodunu kullanarak gelen datayı elde edebiliyoruz;

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
      richtextbox_gelenmesaj.AppendText(serialPort1.ReadExisting());
}
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

fatihinanc

gelen datanın türü nedir hocam? bir de programınızı deneyemiyorum benim rs232 çevirici com9 olarak görünüyor.sizin programınızda maksimum com4 e kadar seçenek verilmiş. veya bendekinin ismini değiştirmenin bir yolu var mı acaba. bana biraz zor gibi geliyor ama.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

RcALTIN

Alıntı yapılan: fatihinanc - 16 Haziran 2010, 13:33:28
gelen datanın türü nedir hocam? bir de programınızı deneyemiyorum benim rs232 çevirici com9 olarak görünüyor.sizin programınızda maksimum com4 e kadar seçenek verilmiş. veya bendekinin ismini değiştirmenin bir yolu var mı acaba. bana biraz zor gibi geliyor ama.

Gelen data türü string yani karakter dizisidir. Yeniden derledim, COM9 için deneyebilirsiniz şimdi...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

fatihinanc

program için teşekkürler hocam. bu gelen data @gallavi arkadaşın dediği gibi buffer daki data mı yoksa bit bit gelen dataların birleşmiş hali mi?
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

RcALTIN

Alıntı yapılan: fatihinanc - 16 Haziran 2010, 13:55:49
program için teşekkürler hocam. bu gelen data @gallavi arkadaşın dediği gibi buffer daki data mı yoksa bit bit gelen dataların birleşmiş hali mi?

Gelen data, portu aktifleştirmeden önce boyutunu belirlediğimiz "readbuffer" kısmına gelen veri. Ancak bu verinin buraya bit bit gelmediği anlamına gelmez, karşı kısımdan "A" gelirse buffera da "A", "ABCDEF12345" gelirse de yine buffera da "ABCDEF12345" yazılır; buffer okunduğunda buraki tüm data okunur; kısaca aynı anda gelen her veri veya veri dizisinden sonra işlemin tekrarlanabilmesi için buffer temizlenmiş oluyor diye düşünmekteyim.
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

fatihinanc

yani atıyorum 8 bitlik bilgi geldi. ve bilginin bittiğini belirten parity bitini aldıktan sonra buffer temizleniyor diyorsunuz.
böyleyse anladım galiba.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)