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."
"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."
' "+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
' "+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
$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
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...
$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
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...
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