
Originally Posted by
bcd
I have a copy of MikroBasic, but find it frustrating that it does
not have equivalents to SerIn2 command with time-outs if there is no data. So for
any serial you need to write an interrupt routine otherwise the serial receive is
a blocking command...
Hi Bill,
I have never used the MikroBasic compiler but after a quick
look at the PDF manual I have a solution for your software UART
timeout problem.
Best regards,
Luciano
From page 257 of MikroBasic for Pic.
(This is the original sample code).
Code:
' Here's a loop which holds until data is received:
error = 1
do
data = Soft_Uart_Read(error)
loop until error = 0
Here is a version with timeout using BREAK to exit the Do loop:
Code:
' Here's a loop which holds until data is received
' or the timeout value has reached 10000.
Dim MyTimeOutCounter as longint
Dim MyError as byte
Dim MyData as byte
....
....
MyError = 1
MyTimeOutCounter = 0
Do
MyData = Soft_Uart_Read(MyError)
MyTimeOutCounter = MyTimeOutCounter + 1 ' increment our timeout counter
If MyTimeOutCounter = 10000 Then ' you will have to adjust this value
Break 'Exit the Do Loop
End if
Loop until MyError = 0
If MyError = 0 Then ' Optional IF
' Serial transfer was successful
Else
' Timeout occured
Endif
Bookmarks