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 

Bascom in branje iz com porta

 
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
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 723
Aktiv.: 3.05
Kraj: Severna primorska

PrispevekObjavljeno: Pet Dec 28, 2007 7:46 pm    Naslov sporočila:  Bascom in branje iz com porta Odgovori s citatom

Pozdravljeni!

Za branje iz com porta na atmega48 uporabljam funkcijo Inputbin. Funkcija je izvedena tako, da prebere določeno število znakov iz com porta. Število znakov je določeno s tem, na kakšen tip spremenljivke prepisujemo dobljene znake.
Npr.:
Koda:

Dim Polje(8) As Byte

Inputbin Polje(1)

Prebere 8 znakov iz com porta.
Problem se pojavi če "prileti" daljši niz(na primer 9 znakov) saj takrat kontrolerček kar obstane!
Potreben je reset, da se zopet začne odzivati!
Kako je mogoče to rešiti?

Hvala!
Lp, Eddie
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Pet Dec 28, 2007 9:00 pm    Naslov sporočila:   Odgovori s citatom

Sam to naredim na sledeč način (tako se string ciklično prepisuje):

Koda:

Config Serialin = Buffered , Size = 20
Enable Interrupts

Declare Sub Getline(s As String)
Declare Sub Flushbuf()

Dim S As String * 20
Dim B As Byte

'------------------------------------------------------------------
'Berem podatke - glavna zanka
Do
     Getline S
     Wait 1
     Flushbuf
Loop

'------------------------------------------------------------------
Sub Getline(s As String)
  S = ""
  Do
    B = Inkey()
    Select Case B
       Case 0                                               'nothing
       Case 13                                              ' we do not need this one
       Case 10
       If S <> "" Then Exit Do                              ' if we have received something
       Case Else
       S = S + Chr(b)                                       ' build string
    End Select                                 
  Loop
End Sub

Sub Flushbuf()
  Waitms 100                                               
  Do
    B = Inkey()                                             
  Loop Until B = 0
End Sub
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 723
Aktiv.: 3.05
Kraj: Severna primorska

PrispevekObjavljeno: Sob Dec 29, 2007 10:50 am    Naslov sporočila:   Odgovori s citatom

Hvala za kodo. Moam malo preštudirati potem te bom pa še kaj vprašal.
Lp
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group