F

pic basic string tanımlaması ?

Başlatan ferdi0435, 23 Ekim 2011, 00:51:51

enginkanat

cok eski bir konu ancak gercekten yardima ihtiyacim var. ben bir modul kullanmak istiyorum ve bu modul AT komutlari ile kullaniliyor.
hserout ["AT+CWLAP?"] komutunu gonderdigimde bana kullanilabilir WiFi AP lerin listesini veriyor.
donen veri;
+ CWLAP: <ecn>, <ssid>, <rssi> [, <mode>]
+ CWLAP: <ecn>, <ssid>, <rssi> [, <mode>]
+ CWLAP: <ecn>, <ssid>, <rssi> [, <mode>]

OK
seklinde oluyor
ecn 0 ile 4 arasinda bir deger mesela 0 sifreleme yok 1 WEB gibi
ssid baglanti adi (karakter uzunlugu belirsiz)
rssi sinyal bozulmasi "-35" gibi
mode ise 0 ise manuel baglanti 1 otomatik baglanti.

bu gibi gelen string kodlari LCD ye nasil yazdirabilirim ve nasil secebilirim?

ornegin bu cikan listeden +cwlap:4,"knt",-36,1 secmek istesem buradaki "knt" yi nasil bir degiskene atayabilirim burada karakter sayisi belirli degil bu noktada tikandim kaldim. 

enginkanat

GELEN VAR BYTE[30]
tanimlamasi yaptim.
HSEROUT [WAIT ("+CWLAP"), STR GELEN\30\13]
yaptim derlemede hata verdi.
HSEROUT [STR GELEN\30\13]
yazdim derlemede hata vermedi ancal LCDOUT $FE,1,GELEN komutu ekrana hic birsey yazmadi
nerede hata yapmis olabilirim?
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 24.05.2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_on
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_off
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
TRISA=%00001100
TRISB=%00000011
PORTA=0
PORTB=0
CMCON=7
OPTION_REG.7=1
'******************* LCD AYARLARI **********************************
DEFINE LCD_DREG PORTB       'LCD data port
DEFINE LCD_DBIT 4           'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTA      'LCD register select port
DEFINE LCD_RSBIT 1          'LCD register select bit
DEFINE LCD_EREG PORTA       'LCD enable port
DEFINE LCD_EBIT 0           'LCD enable bit
'DEFINE LCD_RWREG PORTA      LCD read/write port
'DEFINE LCD_RWBIT 4          LCD read/write bit
DEFINE LCD_BITS 4           'LCD bus size 4 or 8
DEFINE LCD_LINES 4          'Number lines on LCD
DEFINE LCD_COMMANDUS 2000   'Command delay time in us
DEFINE LCD_DATAUS 50        'Data delay time in us
'******************** SERI HABERLESME AYARLARI ***********************
DEFINE HSER_RCSTA 90h       'Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h       'Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25        '9600 Baud @ 0,16%
DEFINE HSER_CLROERR 1     
TEMP VAR BYTE
MODE VAR BYTE
GELEN VAR BYTE[30]
PAUSE 200

BASLA:
LCDOUT $FE,1,"MODUL HAZIRLANIYOR"
HSEROUT ["AT",13,10]
HSERIN 2000,BASLA,[WAIT("OK")]
LCDOUT $FE,1,"MODUL TEST TAMAM"
PAUSE 200
CWMODE:
HSEROUT ["AT+CWMODE?",13,10]
HSERIN 2000,CWMODE,[WAIT("CWMODE:"), TEMP]
LCDOUT $FE,1,"MODUL MODU: ",TEMP
PAUSE 200
IF TEMP<3 THEN
    HSEROUT ["AT+CWMODE=3",13,10]
    GOTO CWMODE
ENDIF
CWLAP:
HSEROUT ["AT+CWLAP?",13,10]
HSERIN [STR GELEN\29\13]
LCDOUT $FE, GELEN



END

ete

LCDOUT $FE, GELEN 
Komut satırını sil ve yerine
LCDOUT $FE,$80,STR GELEN\16
Şeklinde bir komut yaz bakalım ne göreceksin.

Bir şeyler görebiliyor isen o zaman birde şunu dene;
Önce tanımlı değil ise ;
I  VAR BYTE şeklinde bir I değişkeni tanımla
sonra ,
LCDOUT $fe,$80
FOR I=0 to 15
LCDOUT GELEN[I]
Next
LCDOUT $fe,$c0
FOR  I=16 to 29
LCDOUT GELEN[I]
Next

Ete

enginkanat

dediginiz gibi yaptim
pc terminalde
AT+CWLAP AT+CWLAP busy p...
+CWLAP:(4,"knt",-77,"88:41:fc:10:ba:38",6)
+CWLAP:(4,"recepcakmakci",-93,"e8:94:f6:ed:3c:b8",6)

OK
seklinde veriyi ve LCD ekranda
4,"knt",-77,"88:41:fc....
gordum

CWLAP:
HSEROUT ["AT+CWLAP",13,10]
HSERIN 2000,CWLAP,[WAIT("CWLAP:"),STR GELEN\29\13]
LCDOUT $FE, str GELEN
peki diger AP leride LCD de gormek istesem ne yapabilirim? sonucta ben HSEROUT ["AT+CWLAP",13,10] dedigim anda hepsini gonderiyor hic bekleme yapmiyor
GELEN_1 VAR BYTE [20]
GELEN_2 VAR BYTE[20]
GELEN_3 VAR BYTE[20]

ve
HSERIN [WAIT("CWLAP:"),STR GELEN_1\20\13]
HSERIN [WAIT("CWLAP:"),STR GELEN_2\20\13]
HSERIN [WAIT("CWLAP:"),STR GELEN_3\20\13]
seklinde yapsam 628A kapasitesi yetermi acaba?
sonucta ben bu verileri sadece ekrana yazdirmak icin kullanacagim ve aralarindan SSID leri sececegim

ete

Kapasite konusunu denemen lazım bilemiyorum yetermi yetmezmi. Yetmez ise 16F88 'e geçebilirsin.

Ete

enginkanat

hocam
CWLAP:
HSEROUT ["AT+CWLAP",13,10]
HSERIN [WAIT("CWLAP:"),STR GELEN1\20\13]
HSERIN [WAIT("CWLAP:"),STR GELEN2\20\13]
HSERIN [WAIT("CWLAP:"),STR GELEN3\20\13]
LCDOUT $FE,1,str GELEN1\10
LCDOUT $FE,$C0,STR GELEN2\10
LCDOUT $FE,$94,STR GELEN3\10

seklinde yazdim lcd ekranda istedigimi almaya yaklastim knt adresini 2 defa recepcakmakci adresini bir defa yazdi simdi neden 2 defa yazdigini bulmam gerek

hocam kapasite yeter sanirim

ete

Ekrana yazdıran kısım aşağıdaki kodlar
LCDOUT $FE,1,str GELEN1\10
LCDOUT $FE,$C0,STR GELEN2\10
LCDOUT $FE,$94,STR GELEN3\10
Mesela ortadakini sil bakalım yada pasif hale getir sonra tekrar dene bakalım bu satır mı yazdırıyor ikinciyi ?
O yazdırmıyor ise 3. cü satırı kapat yeniden dene. Önce hangi satırın bunu yaptırdığını bulmak sonra sebebini anlamak gerekir. bana kalırsa iki defa yollanıyor da o yüzden program 2 defa yazdırıyor o satırı.

Ete

enginkanat

ben birden fazla SSID olacagini dusunup fazladan HSERIN eklemistim. ancak dediginiz dogru. modul bir bilgiyi birkac defa gonderiyor. bende aralarina PAUSEUS 500 koyarakbu durumu hallettim. Ancak hocam yapmak istedigim Pic Basic ile olacak gibi durmuyor. MicroBasic programini inceledim, program gercekten profesyonelce hazirlanmis ve profesyoneller icin, ogrenmek zaman alir. Demosu uzerinde ogrenmek amaci ile calisiyorum simdi. keske sizin pic basic icin hazirladiginiz derslerden olsa. Internette dersler var ancak bu dersleri hazirlayanlar sagolsunlar dersleri yeni ogrenmeye calisanlar icin hazirlamamislar.

Powered by EzPortal