Hi Guys,
I am trying to write a Uint value (Read from a IR Receiver) to the Serial port so I can monitor it, but I do not know how to convert the returned Uint value into a Byte Array that the Asyncstream function 'Write' requires. Also can I use a timer or must I use a AddLooper to poll the IR? Please can someone help? My code is below:
I am trying to write a Uint value (Read from a IR Receiver) to the Serial port so I can monitor it, but I do not know how to convert the returned Uint value into a Byte Array that the Asyncstream function 'Write' requires. Also can I use a timer or must I use a AddLooper to poll the IR? Please can someone help? My code is below:
B4X:
#Region Project Attributes
#AutoFlushLogs: True
#CheckArrayBounds: True
#StackBufferSize: 300
#End Region
Sub Process_Globals
Public Serial1 As Serial
Private SerialStream As AsyncStreams
Private Timer1 As Timer
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
SerialStream.Initialize(Serial1.Stream, "SerialStream_DataReceived", "SerialStream_Error")
'Start the IR receiver
RunNative("enableIRIn", Null)
Timer1.Initialize("Timer1_Tick", 100)
Timer1.Enabled = True
End Sub
Sub Timer1_Tick
'Poll the IR Receiver...
Dim res As UInt = RunNative("read", Null)
'If a IR Signal was received....
If res > 0 Then
SerialStream.Write(res) '<------- Don't know what to do here.
End If
End Sub
Sub SerialStream_DataReceived (Buffer() As Byte)
Log("Received: ", Buffer)
End Sub
Sub SerialStream_Error
Log("error")
End Sub
#if C
#include "IRremote.h"
//Signal pin
IRrecv irrecv(11);
decode_results results;
B4R::Object res;
void enableIRIn(B4R::Object* o) {
irrecv.enableIRIn();
}
B4R::Object* read(B4R::Object* o) {
ULong result = 0;
if (irrecv.decode(&results)) {
irrecv.resume();
b4r_main::_lastread = millis();
result = results.value;
}
return res.wrapNumber(result);
}
#end if