Sub Process_Globals
Public Serial1 As Serial
Dim tfArduino As TinkerforgeArduino
Dim AStream As AsyncStreams
Dim ledState As Boolean = False
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
Log("AppStart")
tfArduino.Initialize
AStream.Initialize(Serial1.Stream, "AStream_NewData", "AStream_Error")
RunNative("io4_init", Null)
Delay(100)
RunNative("io4_set_state", Null)
Delay(100)
End Sub
Sub AStream_NewData (Buffer() As Byte)
Dim BC As ByteConverter
Dim cmd As String = BC.StringFromBytes(Buffer)
Log("Command:", cmd)
If cmd == "0" Then ledState = False
If cmd == "1" Then ledState = True
RunNative("io4_set_state", Null)
End Sub
Sub AStream_Error
Log("AStream Error")
End Sub
' Inline code setting up & use TF functions
#If C
// Tinkerforge Bindings
#include "hal_arduino.h"
#include "bricklet_io4_v2.h"
// Define port connected Arduino CS pin: UNO=#10, MEGA=#53
TF_Port ports[1] = {{.chip_select_pin=53, .port_name='A'}};
TF_HalContext hal;
TF_IO4V2 io;
char* IO4_UID = "G4d";
int IO4_CH_LED = 0;
int io4_init (B4R::Object* o) {
::Serial.println("io4_init: start");
int rc;
rc = tf_hal_arduino_init(&hal, ports, sizeof(ports)/sizeof(ports[0]));
if (rc < 0) {
::Serial.println("io4_init: error hal init");
return rc;
}
// ::Serial.println("io4_init: hal init done");
rc = tf_io4_v2_create(&io, IO4_UID, &hal);
if (rc < 0) {
::Serial.println("io4_init: error creating io4");
return rc;
}
// ::Serial.println("io4_init: io4 created");
tf_io4_v2_set_configuration(&io, IO4_CH_LED, 'o', true);
::Serial.println("io4_init: done");
return rc;
}
int io4_set_state(B4R::Object* o) {
::Serial.print("io4_set_state: start: ");
::Serial.println(b4r_main::_ledstate, DEC);
int rc = tf_io4_v2_set_selected_value(&io, IO4_CH_LED, b4r_main::_ledstate);
::Serial.println("io4_set_state: done");
return rc;
}
#End If