Здравствуйте.
Написал простенькое консольное приложение на шарпах с библиотекой owen_io.dll.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplicationOWENDLLImport
{
class Program
{
internal class OwenIO
{
[DllImportAttribute("owen_io.dll", EntryPoint = "OpenPort", CallingConvention = CallingConvention.StdCall)]
public static extern int OpenPort(int n, int speed, int part, int bits, int stop, int vid);
[DllImportAttribute("owen_io.dll", EntryPoint = "ClosePort", CallingConvention = CallingConvention.StdCall)]
public static extern int ClosePort();
[DllImportAttribute("owen_io.dll", CharSet = CharSet.Unicode, EntryPoint = "ReadFloat24", CallingConvention = CallingConvention.StdCall)]
public static extern int ReadFloat24(int adr, int adr_type, string command, float value, int index);
}
static void Main(string[] args)
{
int result;
float value = 0;
result = OwenIO.OpenPort(2, 8, 0, 1, 0, 1);
Console.WriteLine(result); //возвращается 0 - успешно
result = OwenIO.ReadFloat24(32, 0, "PV", value, 0);
Console.WriteLine(result); //возвращается -104 - сетевая ошибка nErr
Console.WriteLine(value); //возвращается 0, т.к. значение не изменилось
result = OwenIO.ClosePort();
Console.WriteLine(result); //возвращается 0 - успешно
Console.ReadLine();
}
}
}
Как видно из моих комментариев порт открывается и закрывается нормально, т.е. без ошибок (код возврата 0), а вот чтение параметра PV не удаётся (код возврата -104, что соответствует сетевой ошибке nErr). Грешу на PChar и string.
Подскажите, пожалуйста, в чём может быть проблема. Заранее благодарен
З.Ы.: у меня owen_io.dll версии 1.2.0.17 - это последняя версия библиотеки?