Консультация № 159767
06.02.2009, 14:12
0.00 руб.
0 0 0
Здравствуйте, уважаемые эксперты. Данный вопрос был мной задан и в тему faq по Delphi, но думаю, здесь он уместнее.
Необходимо написать программу работы с СМС. Конкретнее - есть gsm модем, подключенный к сом порту, на который и с которого смс принимаются/отсылаются. Формат команд/ответов есть, т.е. с "верхним" уровнем проблем нет. Но, как известно, компонета "модем" нет ни в одной среде (что конечно вполне естественно). Раньше с подобными задачами не сталкивался (профиль не тот), потому покопал в инете и выяснил, что необходимо писать модуль для работы с сом портом, что я уже сделал, но есть тонкости. Сейчас модуль написан для работы в синхронном режиме с отдельным потоком для чтения и событием, обработчик которого вызывается при получении байта, но и так загрузка процессора составляет 20-25% (опрос ведь также происходит в цикле). Есть функция SetCommMask, которая как нельзя лучше подходит, но она для асинхронного режима работы. Как здесь мне быть? Использовать эту функцию и работать в асинхронном режиме? (модем то любой работает в синхронном). Просто следить чтобы операции не "перекрывались". Или же есть какие то другие механизмы? Встретилась такая фраза:
"Особенности непосредственной работы с модемами я не буду рассматривать, так как существует большой набор высокоуровневых функций и протоколов, таких как TAPI, специально предназначеных для работы с модемами. Если Вас все же интересует эта тема, то почитайте описания функции GetCommModemStatus, и структур MODEMDEVCAPS и MODEMSETTINGS. В остальном работа с модемом ничем не отличается от работы с обычным портом."
Почитал я про то, что говорит автор слов, но понял - мне это не нужно, соединений я не создаю и т.п. Просто нужно иногда посылать в порт нужную команду, читать ответ и все... В остальном программа просто ждет прихода в порт строки (строка определенного формата посылается в порт модемом при приходе смс или входящем звонке)...
Конечно я наверное заново изобретаю велосипед - есть множество готовых уже компонентов типа "Сом-порт", но не в моих принципах не знать как и что делает каждая строка кода, да и за стабильность работы программы как я в таком случае могу отвечать?
Заранее огоромное СПАСИБО!!!

Обсуждение

Форма ответа