Можем ли мы поместить функцию обратного вызова в DLL? - PullRequest
0 голосов
/ 06 декабря 2010

Я пытаюсь использовать методы .Net serialport из другой программы, которая использует движок Unity3D.

У меня есть библиотека классов c # (dll), которая регистрирует и реализует функцию обратного вызова, когда последовательный порт получает некоторые данные.

public CSerialDll()
{         
   _serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
}

void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   int bytes = _serial.BytesToRead;
   _comBuffer = new byte[bytes];
   _serial.Read(_comBuffer, 0, bytes);
   Console.WriteLine("data recv: " + System.Text.ASCIIEncoding.ASCII.GetString(_comBuffer));
}

А затем в другой моей программе я создаю экземпляр класса.

Я хочу знать, будет ли вызываться мой обратный вызов serial_DataReceived внутри библиотеки (dll) или нет. Я пытаюсь прочитать _comBuffer внутри библиотеки из другой программы, и она всегда пуста (даже если данные поступают, когда я тестировал консольное приложение в том же приложении).

Любая помощь очень ценится.

Спасибо

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

<HUNCH>

Если бы я был дизайнером класса, я бы поместил данные в обратный вызов, поэтому, если вы посмотрите на класс SerialDataReceivedEventArgs, вы увидите, что внутри него вы буферизуете с данными.

Итак, после того, как вы получили событие, а затем вызвали чтение, вы фактически отбрасываете отправленные вам данные и запрашиваете больше.

Другими словами, да, тот факт, что это внешняя библиотека, не имеет ничего общего с тем фактом, что она не работает должным образом.

</HUNCH>

0 голосов
/ 06 декабря 2010

Обычно нет ничего особенного в методах, находящихся в отдельной DLL, при условии, что модификаторы доступа установлены правильно.

Однако, в зависимости от того, как вы настроили свое решение, может быть сложно убедиться, чтопоследняя DLL в папке bin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...