rs 232 ile ilgili yardım

Başlatan gkhn06, 22 Nisan 2009, 11:35:26

gkhn06

visual basicde  1,2 veya 3 verisini yolladığımda seri porta bağlı donanımda gelen sinyale göre 1,2 veya 3. ledi yakmak istiyorum. nasıl yapacağımıda bilmiyorum. yardımcı olur musunuz.

Tagli

Seri porta bağlı donanımda bir PIC olursa (mesela 16F628) kolaylıkla yapabilirsin. Yani bilgisayardan veriyi yolla, PIC ile veriyi işle, o da istediğin LED'leri yaksın.
Gökçe Tağlıoğlu

gkhn06

donanımda picle yazılmış bir yazılım var. ama nasıl veriyi yollayacağımı bilmediğim için yapamıyorum. bitirme projesi olarak verdi hoca bitiremezsek kalacağız :?

semitesla

bilgisayardan donanımına hyperterminal kullanarak veri gonderebilirsin.hyperterminal windowsun kendi programıdır bilgisayarında vardır
xp için: başlat/programlar/donatılar/iletişim/hyperterminal
hyperterminalin ayarlarını yapıp veri gonderebilirsin.

Murat Mert

Alıntı yapılan: "gkhn06"visual basicde  1,2 veya 3 verisini yolladığımda seri porta bağlı donanımda gelen sinyale göre 1,2 veya 3. ledi yakmak istiyorum. nasıl yapacağımıda bilmiyorum. yardımcı olur musunuz.

s.a.
arkadaşım pc den pic'e bu sayıları karekter olarak mı göndereceksin yoksa asci olarak mı gödereceksin? duruma göre değişir.
mert07

gkhn06

Alıntı yapılan: "semitesla"bilgisayardan donanımına hyperterminal kullanarak veri gonderebilirsin.hyperterminal windowsun kendi programıdır bilgisayarında vardır
xp için: başlat/programlar/donatılar/iletişim/hyperterminal
hyperterminalin ayarlarını yapıp veri gonderebilirsin.

ilgin için teşekkür ederim. ancak yazılım olarak halletmem gerekiyor. elle tutulur bir kod lazım bana yani.


Alıntı yapılan: "mert07"
s.a.
arkadaşım pc den pic'e bu sayıları karekter olarak mı göndereceksin yoksa asci olarak mı gödereceksin? duruma göre değişir.

nasıl gönderileceğinin bir önemi yok. 1.butona basınca 1.led,  2.butona basınca 2.led, 3'e basınca 3.led yanacak hepsi o kadar. birde visual basic'de isteniyor.

Digimensch

Kardesim iste o buttonlara basinca Serial porta ne gidecek?
Karektermi?
Ascii mi?
Sayimi?
Arkadas onu sormus.Sen Buttona bastiginda o Buttonun click olayina yazacagin kod Serial Porta veri gönderecek , o veri hangi Formatta olacak?

Forumda bircok örnek mevcut VB ile yapilmis.
örnegin:
https://www.picproje.org/index.php/topic,4445&highlight=

gkhn06

Alıntı yapılan: "Digimensch"Kardesim iste o buttonlara basinca Serial porta ne gidecek?
Karektermi?
Ascii mi?
Sayimi?
Arkadas onu sormus.Sen Buttona bastiginda o Buttonun click olayina yazacagin kod Serial Porta veri gönderecek , o veri hangi Formatta olacak?

Forumda bircok örnek mevcut VB ile yapilmis.
örnegin:
https://www.picproje.org/index.php/topic,4445&highlight=
sayı olarak gidecek. 1,2 veya 3  ona görede lambalar yanacak. yolladığın linke baktım orda "x" yazdığın yere ben "1" yazarsam 1.led yanmış olacak mı?

bigbey

sen PC tarafından MSComm1.Output = "3" gönderirsen PIC tarafında
0x33 olarak sayı okursun ASCII 3 karekteri karşılığı hex 33'tür o nedenle bu da desimal olarak 51 sayısına eşittir PIC tarafında bu sayı geldimi diye kontrol edebilirsin.
Eğer sen PIC tarafında alınan verinin 3 sayısına eşit olmasını istiyor isen

MSComm1.Output = chr (3) gönderirsen PIC tarafında 3 desimal sayısını alırsın.
TA6R

gkhn06

Alıntı yapılan: "bigbey"sen PC tarafından MSComm1.Output = "3" gönderirsen PIC tarafında
0x33 olarak sayı okursun ASCII 3 karekteri karşılığı hex 33'tür o nedenle bu da desimal olarak 51 sayısına eşittir PIC tarafında bu sayı geldimi diye kontrol edebilirsin.
Eğer sen PIC tarafında alınan verinin 3 sayısına eşit olmasını istiyor isen

MSComm1.Output = chr (3) gönderirsen PIC tarafında 3 desimal sayısını alırsın.

senin söylediğinden benim anladığım şu.

MSComm1.Output = chr (1)
MSComm1.Output = chr (2)
MSComm1.Output = chr (3)

bu kodların benim işimi görmesi gerekir . doğru mudur?

bigbey

Evet eğer PIC yazılımında sayı 3 ise şunu yap diye bir yazılım varsa doğrudur.
Eğer PIC tarafında
portb'0 dan 1 almak istiyorsan com porttan 1 sayısı gönder.
portb'1 den 1 almak istiyorsan com porttan 2 sayısı gönder.
portb'2 den 1 almak istiyorsan com porttan 4 sayısı gönder.
PIC tarafında gelen sayıyı direk port b ye aktar.
TA6R

gkhn06

Alıntı yapılan: "bigbey"Evet eğer PIC yazılımında sayı 3 ise şunu yap diye bir yazılım varsa doğrudur.
Eğer PIC tarafında
portb'0 dan 1 almak istiyorsan com porttan 1 sayısı gönder.
portb'1 den 1 almak istiyorsan com porttan 2 sayısı gönder.
portb'2 den 1 almak istiyorsan com porttan 4 sayısı gönder.
PIC tarafında gelen sayıyı direk port b ye aktar.
1-2-3 değerini gönderin yeter, yazılım picde var dedi hoca .deneyeceğim bunları bir hata olursa tekrar yazarım. ama pic' den tekrar bilgi almayacağım. bu son dediklerini yapmama gerek varmı? portb nedir? kullanmama gerek varmı? ilk kez duydum bilmiyordum. teşekkür ederim yardımcı olan herkese.

bigbey

Alıntı yapılan: "gkhn06"1-2-3 değerini gönderin yeter, yazılım picde var dedi hoca .
Durum böyle ise sen direkmen
MSComm1.Output = chr (1)  
MSComm1.Output = chr (2)
MSComm1.Output = chr (3)
veya  
MSComm1.Output = "1"  
MSComm1.Output = "2"
MSComm1.Output = "3"
olarak gönder. PIC deki yazılım bunlardan birini tanıyacaktır o zaman.
Ayrıca haberleşme hızının PIC ile uyumlu olduğundan emin olmalısın Baudrate değerini PIC in içinde bulunan ayar ile aynı yapmalısın.
Bunların haricinde söylediklerimi unut.Diğer söz ve terimler PIC mikroişlemcisinin  tanımları ile ilgili sen PIC tarafı ile ilgilenmeyeceğin için sorun yok.
TA6R

gkhn06

Alıntı yapılan: "bigbey"
Alıntı yapılan: "gkhn06"1-2-3 değerini gönderin yeter, yazılım picde var dedi hoca .
Durum böyle ise sen direkmen
MSComm1.Output = chr (1)  
MSComm1.Output = chr (2)
MSComm1.Output = chr (3)
veya  
MSComm1.Output = "1"  
MSComm1.Output = "2"
MSComm1.Output = "3"
olarak gönder. PIC deki yazılım bunlardan birini tanıyacaktır o zaman.
Ayrıca haberleşme hızının PIC ile uyumlu olduğundan emin olmalısın Baudrate değerini PIC in içinde bulunan ayar ile aynı yapmalısın.
Bunların haricinde söylediklerimi unut.Diğer söz ve terimler PIC mikroişlemcisinin  tanımları ile ilgili sen PIC tarafı ile ilgilenmeyeceğin için sorun yok.
haberleşme hızı default olarak 2400 ayarlı. ancak combobox'tan diğer hızlarıda seçip ona göre işlem yapmasıda gerekecek. onun için ne yapmalıyım. alttaki kodda bulunan tüm değerler kullanıcının ayarladığı şekilde değişecek.

MSComm1.Settings = "2400,N,8,1"

Tagli

@bigbey'in de dediği gibi, bu durumda iş PIC'in içindeki yazılımla ilgili. Başta 2400, ama sonradan değişebiliyorsa PIC'e bu isteği bir şekilde iletmek gerekli. PIC'in içindeki yazılım hakkında hiçbir bilgi yok mu? En azından bir akış şeması falan? Çünkü PIC'in değişen hızlara cevap verebilmesi için içindeki ayarın değişmesi gerekir ki bunun için de PIC'te yazılımsal olarak bir komut seti düzeneği oluşturulmalı. Mesela PIC'e "1" komutu gönderilince hız şeçme moduna gelecek, ondan sonra "0" gönderirsek hızını 2400, "1" gönderirsek 9600 olarak ayarlayacak gibi. Bunun bir istisnası bazı PIC'lerdeki otomatik hız tespit etme özelliği. Bunun da çalışması için h'55' verisinin gönderilmesi gerekiyor.

Özetlemek gerekirse, PIC'in modeli, içindeki yazılım ve devre şeması vs. gibi bilgiler olmadan bilgisayarda körlemesine program yazmak pek mümkün değil.
Gökçe Tağlıoğlu