Better cleanup in .NET sensor example.

This commit is contained in:
Stefan Persson 2011-05-19 15:21:27 +00:00
parent f096faf367
commit fbee2fd1fe

View file

@ -9,14 +9,17 @@ namespace SensorPollWin
unsafe class Program unsafe class Program
{ {
[DllImport("TelldusCore.dll")] [DllImport("TelldusCore.dll")]
public static extern int tdTurnOn(int deviceId); public static extern void tdInit();
[DllImport("TelldusCore.dll")]
public static extern void tdClose();
[DllImport("TelldusCore.dll")] [DllImport("TelldusCore.dll")]
public static extern int tdSensor(char* protocol, int protocolLength, char* model, int modelLength, int* id, int* dataTypes); public static extern int tdSensor(char* protocol, int protocolLength, char* model, int modelLength, int* id, int* dataTypes);
[DllImport("TelldusCore.dll")] [DllImport("TelldusCore.dll")]
public static extern int tdSensorValue(char* protocol, char* model, int id, int dataType, char* value, int valueLength, int* timestamp); public static extern int tdSensorValue(char* protocol, char* model, int id, int dataType, char* value, int valueLength, int* timestamp);
static unsafe void Main(string[] args) static unsafe void Main(string[] args)
{ {
int protocolstringsize = 20; int protocolstringsize = 20;
@ -27,7 +30,8 @@ namespace SensorPollWin
IntPtr id = Marshal.AllocHGlobal(sizeof(int)); IntPtr id = Marshal.AllocHGlobal(sizeof(int));
IntPtr dataType = Marshal.AllocHGlobal(sizeof(int)); IntPtr dataType = Marshal.AllocHGlobal(sizeof(int));
Console.WriteLine("getting sensors"); Console.WriteLine("getting sensors");
tdInit();
while (tdSensor(protocol, protocolstringsize, model, modelstringsize, (int*)id, (int*)dataType) == 0) while (tdSensor(protocol, protocolstringsize, model, modelstringsize, (int*)id, (int*)dataType) == 0)
{ {
Console.WriteLine("Sensor: " + System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Unicode.GetBytes(new string(protocol))) + " " + System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Unicode.GetBytes(new string(model)))); Console.WriteLine("Sensor: " + System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Unicode.GetBytes(new string(protocol))) + " " + System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Unicode.GetBytes(new string(model))));
@ -52,6 +56,7 @@ namespace SensorPollWin
Marshal.FreeHGlobal((IntPtr)model); Marshal.FreeHGlobal((IntPtr)model);
Marshal.FreeHGlobal(id); Marshal.FreeHGlobal(id);
Marshal.FreeHGlobal(dataType); Marshal.FreeHGlobal(dataType);
tdClose();
} }
private static string datify(int timestamp){ private static string datify(int timestamp){