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
Molio bi za pomoc u Bascomu
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
Re: Molio bi za pomoc u Bascomu
Da bi u budućnosti izbjegavao probleme sa komunikacijom, savjetujem te pod obavezno koristiš Bascom ugrađenu mogućnost serijske komunikacije preko bafera.
Size je veličina buffera.
Na ovaj način program neće "propustiti" niti jedan byte.
A u programu imaš bug:
š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
Code: Select all
' Konfiguracija hardwera
Config Serialin = Buffered , Size = 12
Na ovaj način program neće "propustiti" niti jedan byte.
A u programu imaš bug:
Code: Select all
Else
Goto Dalje
Preptpostavljam da si htjeo ovako nešto: (?)
do
loop until Ischarwaiting()=1
Akey = Waitkey()
S = S + Hex(akey)
bla bla