DLL Import GetInputName / GetOutputName immer nur 1 Zeichen
Verfasst: Montag 2. November 2015, 12:15
Hallo,
ich habe eine eigene C#-Dll geschrieben, die ich mit DLL-Import einbinde.
Das ganze funktioniert soweit prima.
Ein kleiner Schönheitsfelher hat die Sache aber, Input- und Output-Kanalnamen werden immer nur als 1 Zeichen dargestellt.
Hat jemand eine Idee?
Wenn ich die Funktion in einem Testprogramm aufrufe, kriege ich alle Zeichen zurück.
Danke für Eure Hilfe
[DllExport("GetInputName", CallingConvention = CallingConvention.StdCall)]
unsafe public static void GetInputName(byte Channel, char* name)
{
switch (Channel)
{
case 0:
// Name for input 0
name[0] = 'R';
name[1] = 'E';
name[2] = 'S';
name[3] = (char)0;
break;
case 1:
// Name for input 1
name[0] = 'S';
name[1] = 'T';
name[2] = 'A';
name[3] = (char)0;
break;
default:
// Name for input 1
name[0] = 'T';
name[1] = '0';
name[2] = (char)(Channel + 48);
name[3] = (char)0;
break;
}
}
[DllExport("GetOutputName", CallingConvention = CallingConvention.StdCall)]
unsafe public static void GetOutputName(byte Channel, char* name)
{
name[0] = 'S';
name[1] = (char)(Channel + 48);
name[2] = (char)0;
}
ich habe eine eigene C#-Dll geschrieben, die ich mit DLL-Import einbinde.
Das ganze funktioniert soweit prima.
Ein kleiner Schönheitsfelher hat die Sache aber, Input- und Output-Kanalnamen werden immer nur als 1 Zeichen dargestellt.
Hat jemand eine Idee?
Wenn ich die Funktion in einem Testprogramm aufrufe, kriege ich alle Zeichen zurück.
Danke für Eure Hilfe
[DllExport("GetInputName", CallingConvention = CallingConvention.StdCall)]
unsafe public static void GetInputName(byte Channel, char* name)
{
switch (Channel)
{
case 0:
// Name for input 0
name[0] = 'R';
name[1] = 'E';
name[2] = 'S';
name[3] = (char)0;
break;
case 1:
// Name for input 1
name[0] = 'S';
name[1] = 'T';
name[2] = 'A';
name[3] = (char)0;
break;
default:
// Name for input 1
name[0] = 'T';
name[1] = '0';
name[2] = (char)(Channel + 48);
name[3] = (char)0;
break;
}
}
[DllExport("GetOutputName", CallingConvention = CallingConvention.StdCall)]
unsafe public static void GetOutputName(byte Channel, char* name)
{
name[0] = 'S';
name[1] = (char)(Channel + 48);
name[2] = (char)0;
}