www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Sprejem več bytov - Bascom

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.24
Kraj: Ig

PrispevekObjavljeno: Sre Feb 09, 2011 12:19 am    Naslov sporočila:  Sprejem več bytov - Bascom Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.68
Kraj: KOPER

PrispevekObjavljeno: Sre Feb 09, 2011 8:18 am    Naslov sporočila:  Re: Sprejem več bytov - Bascom Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Sre Feb 09, 2011 11:14 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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