Molio bi za pomoc u Bascomu

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
kuki
Posts: 2
Joined: 09-03-2009, 10:27

Molio bi za pomoc u Bascomu

Post by kuki »

Evo mucim se vec dva dana i nikako da rjesim problem.
Naime radim komunikaciju sa RFID citacem.
Preko serijskog porta saljem citacu upit i od njega dobivam odgovor
koji moze biti razlicitih duzina. Sve to uredno funkcionira ali da bi izbjegao
mogucnost nekih gresaka u komunikaciji, trebao bi ukljuciti i
naredbu ischarwaiting() s kojom nikako da izadjem na kraj.
Program je sljedeci:

$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

Dim Req(7) As Byte

Dim A As Byte
Dim C As Byte
Dim B As Byte
Dim S As String * 40
Dim Akey As Byte

Config Lcdpin = Pin , Rs = Portd.4 , E = Portd.6 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
Config Lcdbus = 4

Restore Req 'punim array sa podacima koje treba poslati na serijski
For C = 1 To 6
Read B
Req(c) = B
Next
Cls

Kreni:
Printbin Req(1) ; 6 'saljem podatke na serijski

Petlja:
Do 'ovo nikako ne radi
Akey = Ischarwaiting()
If Akey = 1 Then
Akey = Waitkey()
S = S + Hex(akey)
Else
Goto Dalje
End If
Loop

Dalje:
Lcd S

End

Req:
Data &HAA , &HBB , &H03 , &H20 , &H00 , &H23
User avatar
mbruck
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 333
Joined: 27-02-2005, 11:36

Re: Molio bi za pomoc u Bascomu

Post by mbruck »

Da bi u budućnosti izbjegavao probleme sa komunikacijom, savjetujem te pod obavezno koristiš Bascom ugrađenu mogućnost serijske komunikacije preko bafera.

Code: Select all

' Konfiguracija hardwera
Config Serialin = Buffered , Size = 12
Size je veličina buffera.

Na ovaj način program neće "propustiti" niti jedan byte.

A u programu imaš bug:

Code: Select all

Else
Goto Dalje
što znači ako Akey = Ischarwaiting() vrati nula (što je prilično vjerovatno) tvoj kod skače na labelu "Dalje" iza koje je END a to je kraj programa!

Preptpostavljam da si htjeo ovako nešto: (?)

do
loop until Ischarwaiting()=1
Akey = Waitkey()
S = S + Hex(akey)

bla bla
Post Reply