 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Sre Feb 09, 2011 12:19 am Naslov sporočila: Sprejem več bytov - Bascom |
|
|
V Bascomu poskušam sprejeti paket bajtov prek RS232 in jih prikazati na
LCD. Za posamezen karakter ni panike, kako pa se to naredi za paket podatkov?
LP G _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.68 Kraj: KOPER
|
Objavljeno: Sre Feb 09, 2011 8:18 am Naslov sporočila: Re: Sprejem več bytov - Bascom |
|
|
RGorazd je napisal/a: |
V Bascomu poskušam sprejeti paket bajtov prek RS232 in jih prikazati na
LCD. Za posamezen karakter ni panike, kako pa se to naredi za paket podatkov?
LP G |
V bascomu sem prejete podatke zapisal v začasni buffer. Ko sem dobil CR (13) sem zapisal to na LCD.
Koda: |
' DEKLARACIJE
Dim Rx_fifo(255) As Byte
Dim Rx_fifo_s As String * 255 At Rx_fifo Overlay
Dim Tx_fifo(10) As Byte
Dim Rs_rx_flag As Bit
Dim A As Byte
Dim Rs_rx As Byte
Enable Urxc 'RxD interrupt flag
On Urxc Rec_isr
Enable Interrupts
'******************************************************************************
Do
If Rs_rx_flag = 1 Then 'Sprejeli smo string končan s "13"
Reset Rs_rx_flag
Cls
Lcd Rx_fifo_s 'Prikažeš na LCD string ki si ga sprejel
' V KOLIKOR ŽELIŠ PRENAŠATI ARRAYE V KATERIH SO BYTI Z VREDNOSTJO 0 JE POSTOPEK MALO DRUGAČEN.
End If
Loop
'****************** SERIAL INTERRUPT SERVICE RUTINE **************************
Rec_isr:
A = Inkey() 'shranjuje znak za znakom
If A > 0 Then
Incr Rs_rx ' Rs_rx je kazalec na pozicijo v sprejemni buffer
Rx_fifo(rs_rx) = A
If A = 13 Then
Set Rs_rx_flag
Rs_rx = 1 ' Postavimo kazalec na začetek sprejemnega bufferja
End If ' tako je pripravljen na sprejem novega stringa
End If
Return
'*****************************************************************************
|
_________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sre Feb 09, 2011 11:14 am Naslov sporočila: |
|
|
V Bascomu sicer obstaja ukaz Input, glej help, ki naj bi delal prav to.
A to velja, če sam prav dobro veš, kdaj bodo podatki prileteli na vhodna vrata.
Varianta z prekinitvenim podprogramom, kot jo je opisal rudiP, (detajlov nisem preverjal, le princip) je tista, ki ti reši problem. Na podoben način vedno berem podatke, ki pridejo na serijska vhodna vrata, in ko prekinitveni podprogram ugotovi, da je konec, recimo dobi znak &H0D, postavi zastavico, (bit, flag), ki jo v zanki testira glavni program, in če je test pozitiven, prevzame informacijo iz vhodnega medpomnilnika (buffer-ja) in jo obdela. Tako vem, da ne preslišim ničesar, kar pride na vhodna vrata, program pa med tem veselo dela, čemur je namenjen. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|