Подключаемая библиотека не полностью работает

ldar
Дата: 24.04.2014 09:42:07
Здравствуйте.
Пытаюсь работать с библиотекой libnodave
Суть библиотеки опрашивать удаленный контроллер фирмы Siemens. Сразу скажу, проблема у меня не в опросе контроллера, а в использовании кода этой библиотеки. Видимо не хватает познаний.
Подключил dll, так же с ним шел файл libnodave.net.cs, написал простенький пример который приводится в документации, работает.
Начал немного усложнять
В доке пишется что нужно использовать методы
PDU p;
    daveResultSet rs;
    davePrepareReadRequest(dc, &p);
    daveAddVarToReadRequest(&p,daveInputs,0,0,1);
    daveAddVarToReadRequest(&p,daveFlags,0,0,4);
    daveAddVarToReadRequest(&p,daveDB,6,20,2);
    daveAddVarToReadRequest(&p,daveFlags,0,12,2);
    res=daveExecReadRequest(dc, &p, &rs);


Только при наборе в VS 2012, к примеру метод davePrepareReadRequest(dc, &p) интеллисенс ничего не выдает, типа нет этого метода. Начинаю копаться в файле libnodave.net.cs, который шел вместе с библиотекой, в нем есть вот такой код

[DllImport("libnodave.dll"/*, PreserveSig=false */ )]
    protected static extern int davePrepareReadRequest(IntPtr dc, IntPtr p);
    public PDU prepareReadRequest() {
        PDU p=new PDU();
        davePrepareReadRequest(pointer, p.pointer);
        return p;
    }

Вроде как прописан prepareReadRequest() , но с другим синтаксисом, здесь он возвращает PDU и не принимает аргументы. Как это понять?
Прикладываю этот простенький пример СкачатьConsoleApplication11.rar
Подскажите хотя бы в каком направлении двигаться, а то я в ступоре.
Спасибо.
ldar
Дата: 24.04.2014 11:26:23
ldar,
Видимо больно обширно описал небольшую проблему.
Видимо не правильно использую библиотеку, только где именно собака зарыта не пойму.
Где-то в степи
Дата: 24.04.2014 11:47:16
ldar,
Что тут не понятно? есть функции обращения к библиотеке в стиле PInvoke, есть обертки функций для этих PInvoke в стиле c#
это сделано для облегчения кода недопрограммистов , пользуйтесь обертками, не лезь те туда где не понимаете...
ldar
Дата: 24.04.2014 12:05:12
Где-то в степи, в том то и дело, что не получается использовать эту обертку, в доке написано использовать
davePrepareReadRequest(dc, &p);
а в обертке
public PDU prepareReadRequest(){};
Как мне написать это код,если он не указан в обертке?
Alex Kuznetsov
Дата: 24.04.2014 12:23:05
ldar
Где-то в степи, в том то и дело, что не получается использовать эту обертку, в доке написано использовать
davePrepareReadRequest(dc, &p);
а в обертке
public PDU prepareReadRequest(){};
Как мне написать это код,если он не указан в обертке?

Может всё-таки попытаться выполнить что-то типа такого:
  ...
   PDU pdu = prepareReadRequest();
   pdu.что-то там...
  ...


PS. Про эту библиотеку нифига не знаю, просто смотрю на то, что делает функция...
Где-то в степи
Дата: 24.04.2014 12:38:27
ldar,
написано правильно, смотрю на код в обертке
public PDU prepareReadRequest() {
PDU p=new PDU();
davePrepareReadRequest(pointer, p.pointer);
return p;
}
pointer заныривает в функцию не из параметров, значит используется тип провайдер, для всей этой лабуды
davePrepareReadRequest защищена, за какое место ее дергать снаружи?, тем более для нее есть обертка которая торчит наружу
тут все в общем то разумно и правильно сделано.
Вам просто надо вернуться к истокам ООП ( это как бы не в западло даже для гуру) и разобраться с взаимодействием с девайсом..
ldar
Дата: 24.04.2014 13:05:00
Alex Kuznetsov,
пробовал, безуспешно. Видимо я еще слишком мало знаю о C#.
ldar
Дата: 24.04.2014 13:08:00
Где-то в степи
за какое место ее дергать снаружи?, тем более для нее есть обертка которая торчит наружу
тут все в общем то разумно и правильно сделано.


Все таки за какое место ее дергать?
Где-то в степи
Вам просто надо вернуться к истокам ООП ( это как бы не в западло даже для гуру) и разобраться с взаимодействием с девайсом..

С удовольствием, только к какой теме ООП это относится?
Alex Kuznetsov
Дата: 24.04.2014 13:13:12
ldar
Alex Kuznetsov,
пробовал, безуспешно. Видимо я еще слишком мало знаю о C#.

Тогда весь код того как пробовали в студию.
А то хрустальные шары у нас дома остались
ldar
Дата: 24.04.2014 16:29:05
Все, разобрался. Причина, моя не внимательность...Все было очень просто, я не заметил, что эти методы принадлежат другому классу.
А в документации скорей всего пример приведен для другого ЯП.
Спасибо всем и извиняюсь, что отнял ваше время из за пустяка.