|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.12.2012, 07:48 | #1 |
Новичок
Джуниор
Регистрация: 14.12.2012
Сообщений: 2
|
Работа с COM портом
Есть задумка написать удобоваримую программку-монитор некоего девайса, который шлет свои данные в COM порт без запросов со стороны ПК.
Сам не профи, но в голове рисуется некая картина: Механизм чтения данных из порта вынести в отдельный класс. У класса есть методы StartMonitor и StopMonitor. А также события OnStart,OnStop для подтверждения что порт открылся и закрылся и OnGet Data по приему корректного пакета от девайса, причем данные от девайса представить в виде структуры. Форма программы имеет один экземпляр данного класса и по приему события о принятом пакете поля структуры раскидывает по соответствующим TextBox`ам и т.д. В первом приближении получилось: в атаче Жажду мнения профи по поводу корректности написанного и в целом идеологии подобного плана программок. Смущают некоторые моменты: 1. Исключения при работе с портом ловить выше или в этом же классе? 2. Правильно ли читаю данные из порта? Дело в том что данный девайс шлет данные потоком без пауз между пакетами и надо выделять пакет по обрамляющим его символам "{" и "}". |
14.12.2012, 09:32 | #2 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Не сильно вдавался в код но общий принцип то прост. В обработчике принятых данных от устройства все полученное без разбора пихаете в единый массив...
а потом, параллельный процесс спокойно уже обрабатывает данные так как вам нужно.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
14.12.2012, 09:48 | #3 | ||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...корректность оперделяется практикой и достоверностью приема, конечному пользователю все равно, что у вас реализовано в классах.
Цитата:
Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
||
14.12.2012, 10:04 | #4 |
Новичок
Джуниор
Регистрация: 14.12.2012
Сообщений: 2
|
А критичные? Допустим выбранный порт занят другой программой и не может быть открыт. Наверно правильно будет маякнуть юзеру. Может внутри класса ловить исключения от SerialPort и сортировать мелкие в лог в том числе и рваные пакеты а критичные передавать выше бросая свое исключение?
ну если один из символов потеряется то поймается следующий - в результате полученный пакет не пройдет проверку контрольной суммы и будет игнорирован. Потеря 2-3 пакетов (даже подряд) не критична. Девайс шлет их со скоростью 9600. На форме не заметно будет что в какой-то момент значения обновились чуть позже. |
14.12.2012, 12:13 | #5 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...я про ваш парсинг по скобочкам, представьте одна из потеряется. Просимулируйте.
Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|
04.01.2013, 23:25 | #6 |
Регистрация: 02.01.2013
Сообщений: 3
|
Не хотелось создавать новую тему с таким же названием....
Вопрос у меня такой. Имеются электронные весы, с которых , через СОМ порт передаются данные в ASCII. Данные идут сплошным потоком от них. Научился их принимать в ячейку. Там куча символов и пробелы, а потом вес. Как сделать так, что бы писать в нужную яч. только вес, отбросив все символы? И информация в эту ячейку может писаться с любого места пакета, что не совсем удобно для обработки. Для приёма информации с порта, использую rsapi.dll Спасибо! |
05.01.2013, 12:16 | #7 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с COM-портом | Georgios | Общие вопросы Delphi | 12 | 28.09.2010 10:31 |
работа с com-портом | larry | Visual C++ | 6 | 12.08.2010 16:21 |
работа с портом | Assemblerru | Win Api | 16 | 10.06.2010 20:00 |
Работа с com портом | albles | Общие вопросы C/C++ | 2 | 16.11.2009 15:15 |
Работа c COM-портом | doniyor | Общие вопросы Delphi | 12 | 27.07.2009 11:16 |