Тест dll с использованием .NET (COM-порт)
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Тест dll с использованием .NET (COM-порт)
Собираюсь написать dll-ку для работы с COM-портом в своей программе (VISA по некоторым причинам не желательна в использовании). Решил я для начала затестить как это все крутится-вертится в . Прикреляю простую сборку в dll и тривиальный код LV. В dll-ке один класс Class1, к котором реализован метод public string[] PortList(), который выдает список портов в системе. Требуется .NET framework (у меня 3.5).
Прошу затестить как это у вас работает, на каких версиях .NET framework. Что пишется при отсутствии framework'а?
Что пишется при отсуствии dll? Быстрота и т.п
Прошу затестить как это у вас работает, на каких версиях .NET framework. Что пишется при отсутствии framework'а?
Что пишется при отсуствии dll? Быстрота и т.п
- Вложения
-
- LabVIEW code.zip
- (6.73 КБ) 497 скачиваний
Последний раз редактировалось Konstantin Sumenko 13 сен 2008, 23:30, всего редактировалось 1 раз.
-
Viktor
- expert
- Сообщения: 1408
- Зарегистрирован: 23 мар 2008, 10:56
- Награды: 4
- Версия LabVIEW: 2020
- Откуда: Санкт-Петербург
- Благодарил (а): 17 раз
- Поблагодарили: 3 раза
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Я проверил - работает.
У меня Vista Ultimate, 8.5.1 и тоже .NET framework 3.5
У меня Vista Ultimate, 8.5.1 и тоже .NET framework 3.5
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Понятно, что пишется, если удалить dll, если не трудно, приведите текст ошибки, пожалуйста.
-
Viktor
- expert
- Сообщения: 1408
- Зарегистрирован: 23 мар 2008, 10:56
- Награды: 4
- Версия LabVIEW: 2020
- Откуда: Санкт-Петербург
- Благодарил (а): 17 раз
- Поблагодарили: 3 раза
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Вот так это выглядит без dll:Crowbar писал(а):Понятно, что пишется, если удалить dll, если не трудно, приведите текст ошибки, пожалуйста.
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
XP sp2, LV 8.5, framework 3.5 - работает!
Без dll см. рисунок:
Без dll см. рисунок:
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Спасибо. Еще вопрос: как быстро у вас выдается список портов (особенно интересуют ситуации, когда в системе их много и среди них есть подвисшие (например от bluetooth адаптеров))?
-
Viktor
- expert
- Сообщения: 1408
- Зарегистрирован: 23 мар 2008, 10:56
- Награды: 4
- Версия LabVIEW: 2020
- Откуда: Санкт-Петербург
- Благодарил (а): 17 раз
- Поблагодарили: 3 раза
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
bluetooth адаптера у меня нет, я запустил файл-менеджер для мобильника, подключаемого через СОМ1, но сам мобильник не присоединил. Вот результат:Crowbar писал(а):Спасибо. Еще вопрос: как быстро у вас выдается список портов (особенно интересуют ситуации, когда в системе их много и среди них есть подвисшие (например от bluetooth адаптеров))?
http://gerasimovviktor.narod.ru/dll1/dll1.htm
(список портов выдается мгновенно)
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Протестил, выдаётся примерно за одну-две секунды, причём если выдавать список с помощью VISA, то это длится у меня около 15 секунд из за заинсталлированых Ethernet-Serial адаптеров.
У меня Vista и LV 8.6.1, а где узнать версию .NET Framework-a?
У меня Vista и LV 8.6.1, а где узнать версию .NET Framework-a?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Например, в панели управления>установка/обновление программ.
Вобщем, неспешно напишу я библиотеку, хотя ничего сложного там нет, а дальше посмотрим
Единственный минус, это наличие на компьютере framework'a (хотя весит он не более 5 мб).
Вобщем, неспешно напишу я библиотеку, хотя ничего сложного там нет, а дальше посмотрим
Единственный минус, это наличие на компьютере framework'a (хотя весит он не более 5 мб).
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Посмотрел, у меня версия 3.0
С удовольствием поюзаю твою библиотеку
Может быть помогу в разработке, если помощь нужна. Сейчас по-моему .NET Framework есть у каждого юзеры винды, так что проблемы с её наличием не вижу никакой
С удовольствием поюзаю твою библиотеку
Может быть помогу в разработке, если помощь нужна. Сейчас по-моему .NET Framework есть у каждого юзеры винды, так что проблемы с её наличием не вижу никакой
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Ок. Первые вопросы возникнут, когда я начну работать с обработчиком ошибок в библиотеке, вернее с их представлением для LV.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Базовую dll я написал. Пока в нее входят:
1) PortList() - выдает список портов
2) Config(...) - привязка к конкретному порту, установка скорости, паритета, кол-ва байт данных, кол-во стоповых бит. Планирую сюда же добавить установку timeout'а по чтению, а не устанавливать ее внутри метода Read(), а так же установку величины буфера по чтению.
3) Open() - октрывает порт
4) Close() - закрывает порт
5) Read() - чтение заданного кол-ва байт из буфера, установка таймаута (это я перенесу в конфиг), метод возвращает строку.
6) Write() - пишет строку в порт.
Можно расширить операцию Read (путем отдельных методов или перегрузки метода Read):
*) ReadExisting- немедленно считает все байты в буфере
*) ReadTo - считает строку до заданного вхождения
*) Read - считает n-ое кол-во байт от заданного смещения
*) ReadLine - считает все до вхождения элемента, установленного заранее свойством (Get).
Можно расширить операцию Write:
*) WriteLine - пишет строку и за ней заранее установленный элемент.
Стоит добавить ф-ии очистки буферов чтения/записи а так же свойство get: IsOpen, сигнализирующее открыт ли порт. И метод, возвращающий кол-во байт, находящихся в буфере.
Отдельная история с кластером ошибки: то, что на выходе constructor и pinvoke node'а малоинформативно (а именно, там все время один и тот же код), поэтому я планирую использовать обработчик ошибок с выбросом собственных сообщений об ошибке.
Пока так, какие будут предложения?
1) PortList() - выдает список портов
2) Config(...) - привязка к конкретному порту, установка скорости, паритета, кол-ва байт данных, кол-во стоповых бит. Планирую сюда же добавить установку timeout'а по чтению, а не устанавливать ее внутри метода Read(), а так же установку величины буфера по чтению.
3) Open() - октрывает порт
4) Close() - закрывает порт
5) Read() - чтение заданного кол-ва байт из буфера, установка таймаута (это я перенесу в конфиг), метод возвращает строку.
6) Write() - пишет строку в порт.
Можно расширить операцию Read (путем отдельных методов или перегрузки метода Read):
*) ReadExisting- немедленно считает все байты в буфере
*) ReadTo - считает строку до заданного вхождения
*) Read - считает n-ое кол-во байт от заданного смещения
*) ReadLine - считает все до вхождения элемента, установленного заранее свойством (Get).
Можно расширить операцию Write:
*) WriteLine - пишет строку и за ней заранее установленный элемент.
Стоит добавить ф-ии очистки буферов чтения/записи а так же свойство get: IsOpen, сигнализирующее открыт ли порт. И метод, возвращающий кол-во байт, находящихся в буфере.
Отдельная история с кластером ошибки: то, что на выходе constructor и pinvoke node'а малоинформативно (а именно, там все время один и тот же код), поэтому я планирую использовать обработчик ошибок с выбросом собственных сообщений об ошибке.
Пока так, какие будут предложения?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Сорри, я не пойму при чём тут DLL? Ты же можешь сделать VIs или я что то главное пропустил?
Меня волнует прерывание чтения с порта до таймаута из другого цикла, это возможно с использованием .NET?
Меня волнует прерывание чтения с порта до таймаута из другого цикла, это возможно с использованием .NET?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Тест dll с использованием .NET (COM-порт)
Конечно наверху VI, но dll содержит класс в котором реализованы все методы и свойтсва для работы с портом. Для доступа к ним используются PInvoke и Property nodes. Обертки VI, пока не делал.
По второму вопросу точно пока не отвечу, но по-моему можно.
По второму вопросу точно пока не отвечу, но по-моему можно.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение