![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Логика программы. Com-порт. [D7, XP]
Unknowing © (2006-10-29 11:28:00)Доброго времени суток! Вопрос такой: есть устройство подключенное с СОМ-порту ком-а. Утройство передаёт бинарное сообщение типа
ID_length_[message_struct] с частотой 10 Гц. Как правильно составить логику опроса порта для вывода информации на экран и одновременно в файл(второй поток) без потери данных...Конкретизируя, как правильно создать буфер и как с ним работать? :)
Боб (2006-10-30 07:45:00) [1]> Unknowing
Есть отличный компонент : VSSComm32
При проектировании задаешь размер буфера, кот. передает железка
(ну и все параметры порта).
И процедуру обработки. Опрашивать порт не надо.
Как только буфер заполнится - попадаешь в эту процедуру, получаешь свой буфер - "и делай с ним что хошь".
Можно еще Thread организовать и семафорить ему о том, что буфер принят,
или послать Message какой-то своей процедуре обработки и все делать уже там...
Вариантов много...
MikePetrichenko (2006-10-29 16:06:00) [2]
> саурсфорж спасёт. там есть трансляция на Delphi. %-)
> (по секрету: я тоже не знаю. у меня даже Nero не работает
> -- потому что я его изуродовал, и больше не использую %-
> )
+1 LOL
Ketmar (2006-10-29 14:48:00) [3]>[28] MikePetrichenko(c) 29-Oct-2006, 14:40
>Аналогично. Его тоже не знаю. :) Расскажешь?
саурсфорж спасёт. там есть трансляция на Delphi. %-)
(по секрету: я тоже не знаю. у меня даже Nero не работает -- потому что я его изуродовал, и больше не использую %-)
MikePetrichenko (2006-10-29 14:40:00) [4]
> использовать API от Nero. %-)
Аналогично. Его тоже не знаю. :) Расскажешь?
Ketmar (2006-10-29 14:32:00) [5]>[26] MikePetrichenko(c) 29-Oct-2006, 14:15
>Я не умею (не знаю) как использовать IMAPI (это тот
>который для записи дисков в XP). Мне долбать форум или
>учится?
использовать API от Nero. %-)
MikePetrichenko (2006-10-29 14:15:00) [6]
> Как правильно составить логику опроса порта для вывода информации
> на экран и одновременно в файл(второй поток) без потери
> данных...Конкретизируя, как правильно создать буфер и как
> с ним работать? :)
Overlapped
> то, с чем он уже умеет работать. %-)
Я не умею (не знаю) как использовать IMAPI (это тот который для записи дисков в XP). Мне долбать форум или учится?
Ketmar (2006-10-29 14:11:00) [7]>[24] MikePetrichenko(c) 29-Oct-2006, 14:06
>Будем спорить что в ЕГО КОНКРЕТНОЙзадаче удобнее? :)
то, с чем он уже умеет работать. %-)
MikePetrichenko (2006-10-29 14:06:00) [8]
> правильно пользоваться тем, что удобно. %-)
Будем спорить что в ЕГО КОНКРЕТНОЙзадаче удобнее? :)
Ketmar (2006-10-29 14:04:00) [9]>[20] MikePetrichenko(c) 29-Oct-2006, 13:54
>Правильно пользоваться Overlapped IO.
правильно пользоваться тем, что удобно. %-)
MikePetrichenko (2006-10-29 14:03:00) [10]
> Он сложнее в програмировании, как правило не для начинающих.
Зато для него пример есть в готовм к использованию виде (в справке). Да и что там сложно, если человек все равно с потоками мучается? Добавляется только один параметр и две функции...
Anatoly Podgoretsky (2006-10-29 14:01:00) [11]> Ответ на сообщение [20]
> Правильно пользоваться Overlapped IO.
Он сложнее в програмировании, как правило не для начинающих.
MikePetrichenko (2006-10-29 13:54:00) [12]Правильно пользоваться Overlapped IO.
Тогда будет меньше вопросов про опрос порта и буфер.
P.S. Блин. Народ! Готов всем бесплатно рассылать MSDN, только читайте пожалуйста, что там пишу!!!
Unknowing (2006-10-29 13:50:00) [13]Всем большое спасибо!! Будем трудиться!
Ketmar (2006-10-29 13:08:00) [14]>[14] Unknowing(c) 29-Oct-2006, 12:38
ну, по-сути верно. теперь -- [17]. детализируй. опять же -- нарисуй автомат. почему автомат? а его проще всего потом закодировать. и можно без особого труда доказать его работоспособность (я полагаю, список состояний и переходов небольшой получится).
а уж как ты будешь кормить автомат байтами -- это детали реализации. возьми, например, тот же AsyncPro. бесплатно, в исходниках. и работает, что любопытно. или synserial (искать по словам "synapse library"). или сам сделай (уже сделал, вроде?).
отвлечённое рассуждение: я вообще удивляюсь, почему FSA так мало используют. очень удобная штука, на самом деле.
Anatoly Podgoretsky (2006-10-29 12:56:00) [15]> Ответ на сообщение [14]
Ну чтоже правильная циклограмма, только очень, очень упрощенная, вот с нее
и начни, укрупняй каждый пункт постепенно.
SDK поставляется с Дельфи
Джо (2006-10-29 12:51:00) [16]"А может, тебе еще полы помыть? А что, я могу..." (c) Бузыкин из "ОМ".
Unknowing (2006-10-29 12:39:00) [17]А еще лучше и прикрепленным кодом... :)
Unknowing (2006-10-29 12:38:00) [18]
> Anatoly Podgoretsky © (29.10.06 12:31) [11]
Дело в том, что с вопросом работы самого COM-порта все ясно. А вот с " правильнойдиаграммой действий трудно, блин" :( В общем-то, хотелось бы увидь ответ вроде такого: Правильнаяциклограмма следующая: 1.Принял байт. 2. Если ID положил его в буфер. 3. Передал в разборщик..
Anatoly Podgoretsky (2006-10-29 12:35:00) [19]> Ответ на сообщение [10]
> Ну чучки сегодня!! И челсями всякими владеют
Ну он такой же чукча, как я Блин Клинтон
Anatoly Podgoretsky (2006-10-29 12:32:00) [20]> Ответ на сообщение [4]
10 герц (100 миллисекунд) это не частота, а горе, даже на IBM PC за это
время успеет выполниться порядка 1 миллиона команд, а на современном
процессоре десятки миллиардов.
Ком порт это одно из самых медленных устройств, кроме того у него есть свой
собственный буфер.
Может тебе почитать статьи по программированию сом портов, вроде и на этом
сайте есть или вообще не ломать голову, а взять какой либо готовый
компонент, которых многие десятки на файловых архивах.
Поскольку самому делать это на уровне АПИ и не владея предметом очень
тяжело.
И посоветовать тоже ничего не возможно, кода не видать, описания не видать,
что не получается неизвестно.
Но если хочешь на уровне АПИ, то в справке все хорошо документировано, но
много и сложно.