Visual Basic ve Pic RS232 Sorunu

Başlatan umutakin1979, 25 Mart 2009, 01:23:44

umutakin1979

Merhaba arkadaşlar.

Visual basic te yazmış olduğum programda ki Tuşa basınca Comporttan veri gidiyor ve Pic deki Bir portu 1 ve 0 yapıyor. Ama Visual basic te komutu üst üste 2 kere göndermem gerekiyor . 1 kere gönderince komutu algılamıyor.

Bunu nasıl halledebilirim..

Asıl sorun şöyle gelişiyor. Misal..

Önce AÇIL diye bilgi gönderiyorum Pice Tık yok. Aynı komutu bir kere daha gönderiyorum o zaman komut algılanıyor Sonrada Pic gerekli portu 1 yapıyor. Ama Önce AÇIL dediğimde yine tık yok sonrasında da KAPAN komutunu gönderiyorum o zaman ilk komut gitmiş oluyor ve Pİcteki port Kapanıyor. Ama aslında ilk gelen komut açıldı.

hatmeto

timer koyup komutu 10 ms arayla arka arkaya gönder (denemedim olabilir)
Bir admin ataasözü derki: "biliyorsan paylaş mod yapsınlar. bilmiyorsan sus banlamasınlar"

Tagli

Acaba ilk komut hiç mi gitmiyor yoksa yanlış mı gidiyor? Ben olsam öntanımlı bir komut yerine bir sayıyı (byte) gönderip bunu 8 adet LED'le PIC'ten kontrol ederdim doğru geliyor mu diye. Deneme amaçlı kurduğum bir devrede verinin bazen yanlış gittiğini gözlemlemiştim. Devreye kapasitör koyunca (22 uF koymuştum, tamamen sallama bir değerdi gerçi) doğru çalışır olmuştu.
Gökçe Tağlıoğlu

Murat Mert

Arkadaşın vb yeniyim ama hazır uygulanmış vb Programlarla pic ile bir arkadaşa devre yapmıştım. Vb den yada pc den vb terminalden sayısal tuşlar ile 1-8 arası komut gönderiyorum on yada off oluyor ve ekranda picden gelen yazı çıkıyor.
 örneğin PC den numarik tuşlarla (1-8 arası) toggle olarak:
-KONTROL 1 AÇIK  
yada aynı tuşa basınca
-KONTROL 1 KAPALI
Pice komutun gidip gitmediğini görüyorum. Programı proton da yaptım. Kolay gelsin.
[/code]
Include "PROTON_4.INC"      
       
Dim VERI As Byte  'VERI 8BIT 0-255 OLARAK ATANDI
Dim KON As Bit
VERI=0 'VERI GIRISI SIFIRLANDI
KON=1

TANITIM:
HSerOut ["NOT: PC nin 1-8 sayisal tuslarina basarak PORTD nin",13,"  calistirmak istediginiz pinini secin",13]
HSerOut ["  9 Tusu butun pinleri ON yapar. 0 Tusu butun cikislari OFF yapar.",13,"  Kolay gelsin. :)",13]
HSerOut ["------------------------------",13," ** PROTON ILE SERI KONTROL **",13,"    design by muratmert4",13,"------------------------------",13]
High PORTD.1   'pici kontrol etmek için portD.1 on
DelayMS 1000
Low PORTD.1    'PORTD.1 Off
GoTo GIRIS
GIRIS:
HSerOut ["** PROTON ILE SERI KONTROL **",13,"    design by muratmert4",13,"------------------------------",13]
GoTo BASLA

BASLA:
HSerIn [VERI]

If VERI=48 Then Clear PORTD
If VERI=57 Then High PORTD

If VERI = 49 Then Toggle PORTD.0
If PORTD.0=1 Then HSerOut ["KONTROL 1--ACIK",13]
If PORTD.0=0 Then HSerOut ["KONTROL 1--KAPALI",13]

If VERI=50 Then Toggle PORTD.1
If PORTD.1=1 Then HSerOut ["KONTROL 2--ACIK",13]
If PORTD.1=0 Then HSerOut ["KONTROL 2--KAPALI",13]

If VERI=51 Then Toggle PORTD.2
If PORTD.2=1 Then HSerOut ["KONTROL 3--ACIK",13]
If PORTD.2=0 Then HSerOut ["KONTROL 3--KAPALI",13]

If VERI=52 Then Toggle PORTD.3
If PORTD.3=1 Then HSerOut ["KONTROL 4--ACIK",13]
If PORTD.3=0 Then HSerOut ["KONTROL 4--KAPALI",13]

If VERI=53 Then Toggle PORTD.4
If PORTD.4=1 Then HSerOut ["KONTROL 5--ACIK",13]
If PORTD.4=0 Then HSerOut ["KONTROL 5--KAPALI",13]

If VERI=54 Then Toggle PORTD.5
If PORTD.5=1 Then HSerOut ["KONTROL 6--ACIK",13]
If PORTD.5=0 Then HSerOut ["KONTROL 6--KAPALI",13]

If VERI=55 Then Toggle PORTD.6
If PORTD.6=1 Then HSerOut ["KONTROL 7--ACIK",13]
If PORTD.6=0 Then HSerOut ["KONTROL 7--KAPALI",13]

If VERI=56 Then Toggle PORTD.7
If PORTD.7=1 Then HSerOut ["KONTROL 8--ACIK",13]
If PORTD.7=0 Then HSerOut ["KONTROL 8--KAPALI",13]

HSerOut ["-------------------------",13]
GoTo GIRIS
mert07

umutakin1979

Değerli Arkadaşlarım Yardımlarınız ve değerli bilgileriniz için çok teşekkür ederim..

Ben sorunumu hallettim Sorun Visual basicte diil Pic yazılımımdan kaynaklandığını buldum..

Kod aşağıdaki gibi...


SERIN PORTA.2 ,N9600, ["A"],AL komutunda bilginin direk alınmasın için

SERIN PORTA.2 ,N9600, ["A"],#AL olarak kullanıyodum.. O zaman rs232 den gelen bilgiyi direk karakter olarak alması gerekiyordu...

Ama benim hatam şu oldu Serin komutunda #AL bileşeni problem çıkarıyor. SERIN2 komutunda çalışan bir bileşen miş bunu öğrendim..








INCLUDE "MODEDEFS.BAS"

CMCON = 7   ' Analog Karsilastiricilar iptal UMUT AKIN

'*****GİRİŞ VE ÇIKIŞLAR*****
TRISA=%11111111                 'PORTA ÇIKIŞ SADECE A0 GİRİŞ
TRISB=%00000000                 'PORTB TAMAMI ÇIKIŞ
PORTA=0                         'PORTA İÇERİĞİNİ SIFIRLA
PORTB=0                         'PORTA İÇERİĞİNİ SIFIRLA


'*****DEĞİŞKENLERİ TANIMLA*****

AL VAR BYTE                    'BYTE CİNSİNDEN TANIMLAMA
DEGER VAR BYTE

DEGER = 0


BASLA:

SERIN PORTA.2 ,N9600, ["A"],AL

IF AL = "5" THEN PORTB.0 = 1
IF AL = "6" THEN PORTB.0 = 0

IF AL = "7" THEN PORTB.1 = 1
IF AL = "8" THEN PORTB.1 = 0



GOTO BASLA                      'BASLA ADRESİNE GİT