![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Логика программы. Com-порт. [D7, XP]
Unknowing © (2006-10-29 11:28:00)Доброго времени суток! Вопрос такой: есть устройство подключенное с СОМ-порту ком-а. Утройство передаёт бинарное сообщение типа
ID_length_[message_struct] с частотой 10 Гц. Как правильно составить логику опроса порта для вывода информации на экран и одновременно в файл(второй поток) без потери данных...Конкретизируя, как правильно создать буфер и как с ним работать? :)
Anatoly Podgoretsky (2006-10-29 12:31:00) [21]> Ответ на сообщение [2]
Программирование ком портов не простая штука.
Можешь и по приходу байта, а можно по приходу группы байтов, а можно по
приходу чего либо еще, например ограничителя.
Важно выстроить правильную диаграмму действий и выбрать правильный метод
чтения.
Unknowing (2006-10-29 12:31:00) [22]
> Ketmar © (29.10.06 12:25) [9]
Ну чучки сегодня!! И челсями всякими владеют и советы ценные раздают! :) Спасибо!
>Всем откликнувшимся
Всё же если есть код, буду очень благодарен!! :)
Ketmar (2006-10-29 12:25:00) [23]>[7] Джо(c) 29-Oct-2006, 12:21
>automata :)
гугль находит и моё написание. %-)
>[8] Unknowing(c) 29-Oct-2006, 12:21
>накапливать байты сообщения от ID до конца сообщения и
>сразу передать в буфер?
угу. можно и так. %-)
>Если у Вас есть кусок рабочего кода буду весьма признателен!
неа. нету. чукча не писатель, чукча читатель-советчик.
Unknowing (2006-10-29 12:21:00) [24]
> Ketmar © (29.10.06 12:16) [5]
Конечный автомат...С этим ясно. Т.е. в процедуре приема накапливать байты сообщения от ID до конца сообщения и сразу передать в буфер? Если у Вас есть кусок рабочего кода буду весьма признателен! ;) (прошу прощения за нескромность, но не программисту сложновато сегодня)
Джо (2006-10-29 12:21:00) [25]
> FSA -- это "finite state automate".
automata :)
Ketmar (2006-10-29 12:17:00) [26]оно же называется иногда FSM -- "finite state machine".
Ketmar (2006-10-29 12:16:00) [27]как приходят -- так и принимать. кто лучше тебя знает, как дивайс передаёт?
а передавать -- когда весь пакет приехал. а чтобы это определить, как раз можно использовать FSA.
FSA -- это "finite state automate".
Unknowing (2006-10-29 12:12:00) [28]
> Ketmar © (29.10.06 12:09) [3]
> собрал все байты, да отдал разборщику.
Вот тут-то я и торможу! Как быть с частотой приема и когда всё это разбощику передавать... Ну, не пойму!!! А Fsa что такое?
Ketmar (2006-10-29 12:09:00) [29]а дальше -- формат пакета известен? вот и всё. собрал все байты, да отдал разборщику. можно в цикле байты собирать, можно FSA сделать.
Unknowing (2006-10-29 11:43:00) [30]
> Anatoly Podgoretsky © (29.10.06 11:37) [1]
А по какому событию его (буфер) разбирать в голове не укладывается... По событию прихода байта я его сразу передаю в буфер... А дальше что?! Ступор...
Anatoly Podgoretsky (2006-10-29 11:37:00) [31]> Ответ на сообщение [0]
С такой частотой сложно потерять и на IBM PC
Буфер например можно создать с помощью GetMem или выделить его статически на
этапе компиляции, что проще и надежнее