Ich würde modernes C++ vorschlagen, also
nicht C objektorientiert CamelCase coding-style (passt gut zu Qt) ähnlich wie die Java-Bindings (nur i.Allg. ohne new) std::string statt char* std::function und std::bind für Callbacks einfach uint8 statt uint8_t (ggf. selbst definieren)
#include <iostream>
using namespace std;
#include "tinkerforge/IPConnection.hpp"
using namespace tinkerforge;
const string Host = "localhost";
const int Port = 4223;
// Print incoming enumeration information
void
enumerationCallback(
const string& uid,
const string& connectedUID,
char position,
uint8 hardwareVersion[3],
uint8 firmwareVersion[3],
uint16 deviceID,
uint8 enumerationType
//nicht nötig, dank bind(), siehe unten//void* user_data
) {
cout << "UID: " << uid << endl
<< "Enumeration Type: " << enumerationType << endl;
if (enumerationType == IPConnection::EnumerationType::Disconnected) {
cout << endl;
return;
}
cout << "Connected UID: " << connectedUID << endl
<< "Position: " << position << endl
<< "Hardware Version: " << hardwareVersion[0] << "."
<< hardwareVersion[1] << "."
<< hardwareVersion[2] << endl
<< "Firmware Version: " << firmwareVersion[0] << "."
<< firmwareVersion[1] << "."
<< firmwareVersion[2] << endl
<< "Device ID: " << deviceID << endl
<< endl;
}
int
main() {
// Create IP Connection
IPConnection ipcon;
if (ipcon.connect(Host, Port)) {
cerr << "Could not connect to brickd" << endl;
exit(1);
}
// Register enumeration callback to "enumerationCallback"
ipcon.registerEnumerationCallback(&enumerationCallback);
//ipcon.registerEnumerationCallback(bind(&AClass::enumerationCallback, this));
// Trigger enumerate
ipcon.enumerate();
cout << "Press key to exit" << endl;
getchar();
//Nicht nötig, da vom Destruktor aufgerufen://ipcon.disconnect();
}