ich bin noch blutiger Tinkerforge Anfänger und versuche eine WebAPI zu schreiben, die mir die Werte aller Sensoren zurückgibt, die an einem Raspberry PI angeschlossen sind. Dazu habe ich mir die API Bindings für C# angeguckt.
Dafür habe ich folgenden Code geschrieben:
public class TinkerforgeController : Controller
{
[HttpGet("GetValues")]
public JsonResult GetValues([FromQuery]string ip, [FromQuery]int port)
{
var service = new TinkerforgeClientService(ip, port);
var values = service.GetValues();
return Json(values);
}
}
public class TinkerforgeClientService
{
private IPConnection _conn;
private List<SensorValue> _values = new List<SensorValue>();
private string _ip = string.Empty;
private int _port = 0;
public TinkerforgeClientService(string ip, int port)
{
_ip = ip;
_port = port;
_conn = new IPConnection();
_conn.EnumerateCallback += EnumerateCallBack;
_conn.Connect(ip, port);
}
private void EnumerateCallBack(IPConnection sender,
string uid, string connectedUid, char position,
short[] hardwareVersion, short[] firmwareVersion,
int deviceIdentifier, short enumerationType)
{
var sensor = SensorFactory.GetSensor(deviceIdentifier, _ip, _port, uid);
_values.Add(sensor.GetValue());
}
public SensorValue[] GetValues()
{
_conn.Enumerate();
return _values.ToArray();
}
}
Mein Problem ist den Code so zu schreiben, dass
EnumerateCallBack
komplett für alle Sensoren durchläuft, bevor
return _values.ToArray();
aufgerufen wird. In der API gibt es die Methoden
Wait()
und
Unwait()
allerdings keine Beispiele wie man diese benutzt. Kann mir da jemand weiterhelfen?
Über MVC Controller Werte aller Sensoren auslesen
in Software, Programmierung und externe Tools
Geschrieben
Hallo Leute,
ich bin noch blutiger Tinkerforge Anfänger und versuche eine WebAPI zu schreiben, die mir die Werte aller Sensoren zurückgibt, die an einem Raspberry PI angeschlossen sind. Dazu habe ich mir die API Bindings für C# angeguckt.
Dafür habe ich folgenden Code geschrieben:
Mein Problem ist den Code so zu schreiben, dass
komplett für alle Sensoren durchläuft, bevor
aufgerufen wird. In der API gibt es die Methoden
und
allerdings keine Beispiele wie man diese benutzt. Kann mir da jemand weiterhelfen?