GSM/GPRS modul

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

Fejből, nagyjából, kábé:

Kód: Egész kijelölése

Reset Portd.5 'állapotellenőzrő led alapállapot
Reset Portd.6 'relé behúzótekercs alapállapot
Soroski = "AT+CLCC" ' gsm lekérdezése

Do
  Print #2 , Soroski
  Input #1 , Sorosbe

  If Left(sorosbe ,  5) = "+CLCC " Then 'Hívás     
  Set Portd.6
  Wait 3
  Reset portd.6
  End If

  If Left(sorosbe , 2) = "OK" 'állapot ellenőrzés ha rendben minden akkor led bekapcsol
  Set Portd.5
  Wait 3
  Reset Portd.5
  End If

  Wait 5 '5 másodperc késleltetés

Loop

End      
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

köszönöm a segítséget!

Holnap már élesben fogom próbálni!
Beszámolok a fejleményekről
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

nobody_hun írta:

Kód: Egész kijelölése

If Left(sorosbe ,  5) = "+CLCC " Then 'Hívás   
 
Ez azt jelenti hogy ellenőrzi az első 5 karaktert?
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

Kód: Egész kijelölése

Ha a sorosbe első 5 karaktere "+CLCC" akkor
[/code]
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

köszönöm szépen
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

És mi van olyankor, ha bejön egy téves hívás? Akkor is be fog kapcsolni!
Én bizony megvizsgálnám, hogy a megkapott hívószám is megfelelő e?!
8)
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

Az m35 tudja a hívásszűrést igy megoldható hogy csak a beállított számok hívhatják!

Egyébként azt hogy lehet megoldani hogy a hívószámazonosítás is menjen?
Nem csak az első 5 karaktert kell figyelni?
Hány karaktert tud figyelni max?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése

' "+CLCC: 1,1,4,0,0,"+36XXXXXXXXX",145

Dim Tszam As String * 12                                    '12 jegyü telefonszám
Tszam = "+36XXXXXXXXX"
Dim Sorosbe As String * 40

 Input #1 , Sorosbe
 If Mid(sorosbe , 19 , 12) = Tszam Then                     '19.-karaktertöl vizsgálsz, 12 karaktert
  Set Portd.6
  Wait 3
  Reset portd.6
  sorosbe =""     ' Törlöd az elözö értéket, hogy ne kapcsoljon többször
  End If
8)
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

kapu48 írta:

Kód: Egész kijelölése

' "+CLCC: 1,1,4,0,0,"+36XXXXXXXXX",145

Dim Tszam As String * 12                                    '12 jegyü telefonszám
Tszam = "+36XXXXXXXXX"
Dim Sorosbe As String * 40

 Input #1 , Sorosbe
 If Mid(sorosbe , 19 , 12) = Tszam Then                     '19.-karaktertöl vizsgálsz, 12 karaktert
  Set Portd.6
  Wait 3
  Reset portd.6
  sorosbe =""     ' Törlöd az elözö értéket, hogy ne kapcsoljon többször
  End If
8)
Köszönöm a segítséget, rendesek vagytok!
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

Kód: Egész kijelölése

$regfile = "m8def.dat"
$crystal = 4000000

Baud 9600

Config Pind.6 = Output
Config Portd.5 = Output

'open channel for output
Open "comd.1:9600,8,n,1" For Output As #2
Open "comd.0:9600,8,n,1" For Input As #1

Reset Portd.5                                               'állapotellenőzrő led alapállapot
Reset Portd.6                                               'relé behúzótekercs alapállapot
Output #2 ,(soroski) = "AT+CLCC"                            ' gsm lekérdezése

Do
   Print #2 , Soroski
   Dim Tszam As String * 12                                 '12 jegyü telefonszám
   Tszam = "+36XXXXXXXXX"
  Dim Sorosbe As String * 40

 Input #1 , Sorosbe
 If Mid(sorosbe , 19 , 12) = Tszam Then                     '19.-karaktertöl vizsgálsz, 12 karaktert
  Set Portd.6
  Wait 3
  Reset portd.6
  sorosbe =""     ' Törlöd az elözö értéket, hogy ne kapcsoljon többször
   End If
   Wait 3
   Reset Portd.6


  If Left(sorosbe , 2) = "OK"                               'állapot ellenőrzés ha rendben minden akkor led bekapcsol
  Set Portd.5
  Wait 3
  Reset Portd.5
  End If

  Wait 5                                                    '5 másodperc késleltetés

Loop

End
syntaktikai hibát ir a bascom

Kód: Egész kijelölése

Output #2 ,(soroski) = "AT+CLCC"                            ' gsm lekérdezése 
és erre

Kód: Egész kijelölése

Print #2 , Soroski 
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Na, akkor az alapokról kicsit.

A Programn felépítése a következő:
1, IC megmondása, sorosport, órajel. Azaz a $-l kezdődő alapparaméterek megadása
1b, configurálni a belső funkcionális részeket (Timer, PWM, lábirányok, LCD COM, SPI, I2C..... CONFIG utasítás)
2, a változók definiálása (DIM utasítás)
3, Konstansok definiálása (Const utasítás)
4, ALIASok definiálása (lábak helyett utalunk a funkcióra pl.) - opcionális (ALIAS utasítás)
5, Szubrutinok definiálása (SUB utasítás)
5, változók alapértékeinek beállítása

6, főprogram.-....



Azaz például:
DIM - NEM lehet a főprogramban.
Tetszőleges lábra nem illik SW sorosportot rakni, ha van HW-es a chipben!
A sorosport valós és elméleti sebessége 0% hibával fusson! (kvarc mérete; -> Bascomkönyv: Sorosport fejezet)
BAUD helyett első definiáláskor a $baud szükséges. A bauddal ($ nélkül) sorosporti sebesség átállítása következik be.



Bocs a kötözködésért.... Csak nehogy a fordító ne tudja valamiért helyrerakni, aztán érdekességet fordítson...
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

Köszönöm a heplet és az infot!

Tehát nem kell megnyitni külön programon belül a sosros komunikációt mert van hardveres.

Megfogadva tanácsod:

Kód: Egész kijelölése

$regfile = "m8def.dat"
$crystal = 4000000

$baud = 9600

Config Pind.6 = Output
Config Portd.5 = Output

Reset Portd.5                                               'állapotellenőzrő led alapállapot
Reset Portd.6                                               'relé behúzótekercs alapállapot

Dim Tszam1 As String * 12                                '12 jegyü telefonszám
Dim Tszam2 As String * 12
  Tszam1 = "+36XXXXXXXXX"
  Tszam2 = "+36XXXXXXXXX"
Dim Sorosbe As String * 40
Dim Ready As String * 2
Ready = "OK"                                                'Ha nincs bejövő hívás

Do

  Print "AT+CLCC"                                           ' gsm lekérdezése
  Waitms 50

 Input , Sorosbe

 If Mid(sorosbe , 19 , 12) = Tszam1 Then                    '1. szám azonosítása
  Set Portd.6

  Wait 3

  Reset portd.6
  Sorosbe = ""                                              ' Törli az előzőt hogy ne kapcsoljon többször
   End If
 If Mid(sorosbe , 19 , 12) = Tszam2 Then                    '2. szám azonosítása
  Set Portd.6

  Wait 3

  Reset portd.6
  Sorosbe = ""                                              ' Törli az elözőt, hogy ne kapcsoljon többször
  End If
  If Left(sorosbe , 2) = Ready Then                         'állapot ellenőrzés ha rendben minden akkor led bekapcsol
  Set Portd.5
  Wait 3
  Reset Portd.5
  End If

  Wait 5                                                    '5 másodperc késleltetés

Loop

End
2 szám azonosítása.
nemsokára tesztelem
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A HW-es sorosport ugye kötött melyik lábakon van, azt nem rakhatod máshová...
A HW sorosport tud pl, amit a SW alapú nem:
- bufferelt (adás+vétel)
- megszakításkezelt, így nem veszik el adat
- timeout (pl. INPUT esetén)
- stb...
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

Első ránézésre életképesnek tartod a programot?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Még amire figyelni kel! Róbert is utalt rá!
A Crystal Freq hibaszázaléka, ami 4MHz/9600 Baud esetén = 0.16%
Esetleg okozhat átviteli hibát! (Rendszerfüggő?)
Esetleg a legközelebbi ajánlott jobb érték: 6.144MHz/9600Bau=0.00%Err
8)
Válasz küldése