Автор
|
Тема: Слушание COM-порта на Вижульном Ц под винды
|
darkus |
опубликован 09-01-2002 14:14 MSK
Здравствуйте, коллеги...Организовалась у меня проблема - нужно мне в недельный срок написать программу, которая будет слушать ОДИН COM-порт, в который будут периодически пихаться данные с внешнего устройства (конкретн - GPS с протоколом TSIP). Помогите советами и чем сможете в организации этого дела. Благодарен буду сильно :)
|
eyes
|
опубликован 09-01-2002 15:03 MSK
ну мы люди простые... поясни мдуракам GPS с протоколом TSIP
|
darkus
|
опубликован 09-01-2002 15:05 MSK
Да это все фигня. Протокол я реализовал уже. Система обычная - из порта сваливаются пакеты, которые надо валидировать и разбирать. Если пакет верный, то он декодируется и интерпретируется каким-либо образом.Меня же интересует технология прослушки самого порта. Мне это не ясно. |
eyes
|
опубликован 09-01-2002 15:45 MSK
Завтра кину сурсы с портом, если не опередят:) А вообще я тоже ни бум-бум в программировании... |
darkus
|
опубликован 09-01-2002 15:51 MSK
Кидай, а то у меня только в дельфяшном обжект паскале есть. А мне в вижуальный Ц переписывать в лом, да и парадигмы различаются.Да, если не сложно будет, сможешь сразу рассказать, где что в твоих сырцах? |
Jack
|
опубликован 09-01-2002 15:55 MSK
http://www.happytown.ru/prog/practika/com_win32.html
|
eyes
|
опубликован 09-01-2002 16:13 MSK
Сырцы под винапи работают с момедом.. Нужны? |
darkus
|
опубликован 09-01-2002 16:18 MSK
Для WIN API не нужны, мне потом все равно под Linux придется переписывать. Мне бы кто просто на пальцах объяснил, что делать нужно. Скорее, даже, не надо программ, а простенькую блок-схему, не шибко детализированную. |
darkus
|
опубликован 09-01-2002 16:22 MSK
Спасибо, Jack. Замечательная статья... |
eyes
|
опубликован 09-01-2002 16:43 MSK
Да простит меня purpe, но некоторые топики я сохраняю и сделаю ДОСтупными 4 всех. Пис пипл! Секс2джек |
DEiL
|
опубликован 09-01-2002 17:36 MSK
я летом парлися и писал такую же программу. только хард упал и сырцы улетели :(2darkus -> основной алгоритм был такой - открываешь ком-порт как файл и просто читаешь\пишешь оттуда :) если в линукс переписывать придётся, то вообще халява - там этот девайс точно как файл представлен. только наверное ридётся сделать неблокируемым дескриптор - сам знаешь для чего. надеюсь это сработает:) но лучше обратись к алкаголику lamo - он у нас *nix-герой :) |
darkus
|
опубликован 09-01-2002 17:52 MSK
Я тут погорячился с линуксом. Руководство сказало, что не потребуется :). Однако под винды надо. Как открыть файл COM? мне понятно. Только вот как слушать порт? Ведь данные оттуда летят независимо от ОС или компа. Конкретно, GPS передает свои координаты и другую ахинею с интервалом в одну секунду. Т.е. надо в отдельной нити вешать какой-то прослушиватель, я правильно понимаю?.. |
Jack
|
опубликован 09-01-2002 19:01 MSK
2darkus: Да, правильно. Летом я баловался в этом направлении - и остался набросок для чтения из COM-порта в файл. Если интересно посмотри: ftp://ftp.mpibank.ru/pub/primer.zip или ftp://linux.mpibank.ru/pub/primer.zip или ftp://194.84.122.67/pub/primer.zip (не знаю вернули нас в доменной зону РУ или нет)
|
darkus
|
опубликован 10-01-2002 10:49 MSK
Да, спасибо Jack. Я твой пример скачаю (если удастся) и посмотрю. Ежели возникнут вопросы, то я сразу к тебе, ладно? |
darkus
|
опубликован 10-01-2002 13:32 MSK
Вот и возник первый вопрос. Обязательно ли организовывать бесконечный цикл для того, чтобы отслеживать изменения в канале COM-порта? |
Jack
|
опубликован 10-01-2002 13:45 MSK
Конечно нет. Эту гадость я писал для разового использования - перехватить трафик СОМ-порта и запихать в файл, для последующего анализа. Поэтому прога и оформлена без выкрутасов, как косоль. Как организовать чтение тебе - зависит от архитектуры твоего приложения. Т.к. GPS выдает данные с интервалом в секунду, возможно удастся успеть их обработать тут-же, не плодя нитей. Если приложение предполагается интерактивным - лучше создать для приема/обработки отдельную нить. В общем - тебе виднее. |
darkus
|
опубликован 10-01-2002 14:18 MSK
Ну я думаю создать отдельную нить, туда как раз и запихнуть бесконечный цикл для прослушки. А в основном потоке программы делать все остальные свои действия. Я на правильном пути? |
Jack
|
опубликован 10-01-2002 14:34 MSK
IMHO ДА. |