Я пытаюсь реорганизовать свой проект, чтобы вместо многих функций у меня были некоторые объекты.
Я пишу приложение, которое связывается с определенным оптическим сканером через последовательный порт. Я использую обычные методы класса SerialPort
(Write, Open, Close) и некоторые расширенные методы, которые не включены в стандартный класс, например ActivateLaser (он записывает определенные байты в SerialPort).
Я сделал первый шаг: я создал новый класс, который наследует класс SerialPort, и добавил свои собственные методы, такие как ActivateLaser. Этот проект скомпилирован в dll, а затем включен в мой основной проект.
Теперь я хотел бы пойти дальше и включить прослушивание SeiralPort для моей библиотеки DLL. Как это работает сейчас: сначала я назначаю событие DataReceived своему сканеру (сканер является экземпляром моего собственного класса SerialPort):
scanner.DataReceived += MyDataReceivedEventHandler;
Затем в MyDataReceivedEventHandler я вызываю делегата, который отображает полученные данные в RichTextBox или в DataGridView:
private void MyDataReceivedEventHandler(object sender, SerialDataReceivedEventArgs e)
{
...
this.BeginInvoke(new DisplayDataDelegate(DisplayData), receivedText);
...
}
private void DisplayData(string receivedText)
{
// display received text in RichTextBox in one project, display received text in DataGridView in another project
}
Теперь мне интересно, как я могу реализовать прослушивание последовательного порта в классе MySerialPort. Если я просто добавлю обработчик события для DataReceived, то оператор, который связывает MyDataReceivedEventHandler со сканером, будет выглядеть примерно так:
scanner.DataReceived += scanner.MyDataReceivedEventHandler;
Я просто не знаю, как собрать все это вместе (я должен определить MyDataReceivedEventHandler в классе MySerialPort, куда я должен поместить делегат для отображения текста, как я могу сделать это возможным, чтобы показать текст в RichTextBox или в DataGridView, .)
Я знаю, что мой вопрос немного сложен, но я действительно хотел бы лучше организовать свою работу, чтобы я мог использовать свой класс MySerialPort в других проектах ...
Спасибо!