Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизCOM-порт. Вывод информации на него. Найти похожие ветки
← →
MASTAFA © (2007-06-20 10:01) [0]Собственно, хочу узнать у знатоков, как можно выводить информацию на COM-порт? И в частности было бы неплохо если бы вы подкинули какой-нибудь примерчик с выводом числовой информации на него.
← →
MBo © (2007-06-20 10:09) [1]CreateFile + WriteFile
пример задания параметров порта есть в MSDN по ссылкам из топика CreateFile
← →
tesseract © (2007-06-20 10:10) [2]см описание CreateFile /WriteFile с именем файла ("/.//COM1").
или скачай AsyncPro- там всё реализовано.
← →
Dib@zol (2007-06-20 10:12) [3]<a href="http://kladovka.net.ru/index.cgi?pid=dir&rid=24" target="_blank">http://kladovka.net.ru/index.cgi?pid=dir&rid=24</a>
Там есть нормальный екзампл.
← →
Dib@zol (2007-06-20 10:13) [4]Тфуёблн. Хреново ссылочка вышла...
← →
Dimaxx © (2007-06-20 10:22) [5]А ты не извращайся, а просто ссылку приведи и все будет пучком... :)
← →
MASTAFA © (2007-06-20 10:38) [6]ээээ, Dib@zol, а вот по ссылочке примерчик по написанию проги без компонентов, там что реализуется? Мигание лампочек на модеме, что ли?
← →
Dib@zol (2007-06-20 10:47) [7]Хм. Изините. Сам пока не смотрел, просто увидел в "кладовке" название.
← →
MASTAFA © (2007-06-20 10:56) [8]Нет, почему же, на мой взгляд очень полезная ссылка. До этого я не встречал еще работающих до конца программ для Com-порта. Спасибо большое!
Хотел бы еще узнать а по работе с USB ничего случайно не завалялось ни у кого? Хотелось бы такой же примерчик как и с COM-портом.))
А AsyncPro вообще откуда можно взять?
http://sourceforge.net/project/showfiles.php?group_id=71007 - отсюда подойдет? А нет ли к нему документации на русском?
← →
Kolan © (2007-06-20 11:24) [9]> Хотел бы еще узнать а по работе с USB ничего случайно не
> завалялось ни у кого?
C USB есть два варианта работы
1. Он устанавливается в система как виртуальный кос порт. И тода работа ничем не отличается от обычной работы с ком портом.
2. Напрямую. Для этого существуют dll. Например фирма FTDI предоставляет такие+описание+ пример(в том числе и на Delphi)…
← →
Германн © (2007-06-20 11:45) [10]
> А AsyncPro вообще откуда можно взять?
http://sourceforge.net/projects/tpapro/
← →
MASTAFA © (2007-06-20 12:30) [11]А установить USB как виртуальный COM?
← →
tesseract © (2007-06-20 13:07) [12]
> А установить USB как виртуальный COM?
Драйвера к устройству поставить, если, конечно, они есть.
← →
Инс (2007-06-21 15:48) [13]У Василия Пивко есть отличная статья.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1126
← →
Боб (2007-06-22 08:20) [14]Есть еще отличный (на мой взгляд) компонент VSSComm32 с исходниками
для D5..D7 (а может и выше)
← →
MASTAFA © (2007-06-22 14:40) [15]уффф, никак не могу понять, чем конкретно отличается (в программном смысле) синхронный режим передачи данных от асинхронного?
← →
Инс (2007-06-22 14:42) [16]В асинхронном режиме функции ReadFile и WriteFile возвращают управление сразу же, а чтение/запись идет в фоновом режиме. В синхронном режиме эти функции блокируют нить.
← →
MASTAFA © (2007-06-22 15:18) [17]Гм, картина проясняется, но вопрос в том, какие именно атрибуты отличают синхронный режи от несинхронного при написании программы. Во всех хелпах, которые я видел, обычно описывается асинхронный режим, а про синхронный ни слова. Неужели в программном смысле они реализуются абсолютно одинаково?
← →
Инс (2007-06-22 15:21) [18]Для асинхронного режима указывается флаг FILE_FLAG_OVERLAPPED в функции CreateFile
← →
MASTAFA © (2007-06-22 15:26) [19]Все дошло. Для синхронного 0? ))
← →
Инс (2007-06-22 15:29) [20]
> Для синхронного 0?
Вы не поверите! Для синхронного НЕ указывается флаг FILE_FLAG_OVERLAPPED :)
Удачи!
← →
Инс (2007-06-22 15:30) [21]0 или если нужны другие флаги - то другие флаги.
← →
MASTAFA © (2007-06-22 15:33) [22]А все-таки ноль)) Если его не указывать компилятор ругается
← →
Инс (2007-06-22 15:36) [23]
> Если его не указывать компилятор ругается
Конечно ругается :)))
← →
MASTAFA © (2007-06-22 15:43) [24]эх-х-х, издеваться еще успеваете )))
← →
Германн © (2007-06-22 15:45) [25]
> MASTAFA © (22.06.07 15:43) [24]
Не надо работать в синхронном режиме. Пусть это и проще для тебя, но всё равно не надо.
← →
Инс (2007-06-22 15:51) [26]
> Не надо работать в синхронном режиме.
В основном потоке действительно не надо. Но можно, например, создать дополнительный поток, и в нем работать в синхронном режиме. Главный поток при этом сможет беспрепятственно заниматься обработкой сообщений.
← →
Германн © (2007-06-22 15:53) [27]
> Но можно, например, создать дополнительный поток, и в нем
> работать в синхронном режиме.
Всё равно не надо. Сплошные грабли!
← →
MASTAFA © (2007-06-22 15:57) [28]Да нет, я понимаю почему не надо работать в синхронном режиме. Просто, во-первых, мне нужен вывод на микросхемку именно в таком режиме, а, во-вторых, мне абосолютно не важна производительность (или вообще его способность производить что-нибудь :D) компьютера в данный момент. Просто программка сгенерирует несколько импульсов и по счетчику отключится.
← →
Германн © (2007-06-22 17:53) [29]
> Просто, во-первых, мне нужен вывод на микросхемку именно
> в таком режиме
Ты заблуждаешься. Синхронность/асинхронность тут ни при чем.
← →
Инс (2007-06-22 17:59) [30]Согласен с Германн. Микросхема ничегошеньки не знает, про то, как Windows реализует запись/чтение. Блокирует ли она нить или не блокирует, а операцию производит в фоновом потоке. Ей все-равно. У нее есть только транзисторы внутри и ножки снаружи :) Согласен?
← →
Германн © (2007-06-23 02:24) [31]
> MASTAFA © (22.06.07 15:57) [28]
>
> Да нет, я понимаю почему не надо работать в синхронном режиме.
>
> Инс (22.06.07 17:59) [30]
>
> Согласен с Германн. Микросхема ничегошеньки не знает, про
> то, как Windows реализует запись/чтение. Блокирует ли она
> нить или не блокирует, а операцию производит в фоновом потоке.
>
Тут вообще несколько другое. Что получит микросхема зависит от драйвера СОМ-порта. И от того, что система aka Windows сочтёт для себя главной задачей в тот или иной момент. И работа драйвера СОМ-порта, ну никак не зависит от того используется синхронный или асинхронный метод работы с СОМ-портом.
P.S. Ещё раз повторю - синхронная работа с устройством, которое поддерживает асинхронность - полная чушь! И часто приводит к трудноуловимым граблям для пользователей таких программ.
← →
Инс © (2007-06-23 09:43) [32]
> Тут вообще несколько другое. Что получит микросхема зависит
> от драйвера СОМ-порта. И от того, что система aka Windows
> сочтёт для себя главной задачей в тот или иной момент. И
> работа драйвера СОМ-порта, ну никак не зависит от того используется
> синхронный или асинхронный метод работы с СОМ-портом.
Драйвер COM-порта будет работать одинаково в обоих режимах, но надо учитывать, что Windows не является системой реального времени, так что время начала отправки данных будет зависеть от того, синхронный режим используется или асинхронный. Это связано с планированием потоков. А вот после того, как отправка данных начата - разницы уже не будет никакой.
> P.S. Ещё раз повторю - синхронная работа с устройством,
> которое поддерживает асинхронность - полная чушь! И часто
> приводит к трудноуловимым граблям для пользователей таких
> программ.
Вы так категорично это заявляете! Я в принципе согласен, что асинхронный режим работы предпочтительнее, но раз вы говорите, что синхронный - полная чушь, то хотелось бы услышать более конкретные аргументы. С чем именно можно столкнуться при работе в синхронном режиме?
← →
Германн © (2007-06-23 11:44) [33]
> Вы так категорично это заявляете! Я в принципе согласен,
> что асинхронный режим работы предпочтительнее, но раз вы
> говорите, что синхронный - полная чушь, то хотелось бы услышать
> более конкретные аргументы. С чем именно можно столкнуться
> при работе в синхронном режиме?
>
С проблемами связанными с использованием доппотоков недозрелыми желтыми земляными червяками. Как то: программа начинает через несколько часов работы заявлять, что не может открыть порт, потому что он занят (хотя именно она сама его заняла). Или, например, при выдергивании из компа переходника USB-COM программа "наглухо" вешает систему, даже на CAD нет реакции. И т.д. и т.п.
← →
Инс © (2007-06-23 12:08) [34]
> С проблемами связанными с использованием доппотоков недозрелыми
> желтыми земляными червяками.
Ну дык, синхронный режим тут ни причем, это руки кривые. Ну да ладно, пожалуй, действительно, при работе с потоками нужно четко представлять как это работает, иначе - грабли, грабли, грабли. Хотя при работе в асинхронном режиме последнее утверждение тоже действует.
← →
Anatoly Podgoretsky © (2007-06-23 12:19) [35]> Германн (23.06.2007 02:24:31) [31]
> P.S. Ещё раз повторю - синхронная работа с устройством, которое поддерживает асинхронность - полная чушь! И часто приводит к трудноуловимым граблям для пользователей таких программ.
Пока наблюдается другое. Ассинхронный режим работы большинству не по зубам.
← →
mastafa © (2007-06-25 15:57) [36]
> С проблемами связанными с использованием доппотоков недозрелыми
> желтыми земляными червяками
!!! откровенная грубость
> Как то: программа начинает через несколько часов работы
> заявлять, что не может открыть порт, потому что он занят
О каких часах идет речь? Я же написал, что прога передает всего лишь несколько импульсов. На это уйдет ровно столько времени сколько я захочу.
> Согласен с Германн. Микросхема ничегошеньки не знает, про
> то, как Windows реализует запись/чтение. Блокирует ли она
> нить или не блокирует, а операцию производит в фоновом потоке.
> Ей все-равно. У нее есть только транзисторы внутри и ножки
> снаружи :) Согласен?
Согласен с вашей точкой зрения. А язык Делфи это набор begin"ов и end"ов с большим количеством символов между ними... . И ему все равно в каком порядке они расположились. Согласны?
> И работа драйвера СОМ-порта, ну никак не зависит от того
> используется синхронный или асинхронный метод работы с СОМ-
> портом.
Асинхронный режим в аппаратном смысле сильно отличается от синхронного. В синхронном режиме нет ни старт-бита, ни стоп-бита, ни ошибок передачи, по типу ошибк паритета и пр. Короче говоря синхронный режим - это в принципе реализация работы простейшего 8-разрядного генератора. Так что такого писать точно не стоит:
> P.S. Ещё раз повторю - синхронная работа с устройством,
> которое поддерживает асинхронность - полная чушь!
И вообще если я написал, что мне надо знать отличие синхронного от несинхронного, то если у вас есть время и желание ответьте на него максимально точно и корректно. И не надо разводить тут лишние обсуждения, которые порой могут сбить с толку других людей, читающих данный форум.
← →
tesseract © (2007-06-25 16:19) [37]
> И вообще если я написал, что мне надо знать отличие синхронного
> от несинхронного, то если у вас есть время и желание ответьте
> на него максимально точно и корректно.
Синхронная функция не возвращаеться до окончания операции, асинхронная возвращаеться сразу. GetLastError вернёт ERROR_IO_PENDING. дальше сам думай, как ждать результата.
> Асинхронный режим в аппаратном смысле сильно отличается
> от синхронного. В синхронном режиме нет ни старт-бита, ни стоп-бита, ни > ошибок передачи, по типу ошибки паритета и пр.
Не путай тёплого с мягким, причём тут старт стоп/бит и синхронность/ асинхронность? А ошибки паритета вообще не в тему.
RS232 - последовательный интерфейс, он не параллельный, но частоты передачи у него строго определённая из доступных, синхронный он или нет?
ЗЫ: И вообще почитай хоть что нибудь, а не гони на умных людей.
← →
Германн © (2007-06-25 17:00) [38]
> Асинхронный режим в аппаратном смысле сильно отличается
> от синхронного. В синхронном режиме нет ни старт-бита, ни
> стоп-бита, ни ошибок передачи, по типу ошибк паритета и
> пр. Короче говоря синхронный режим - это в принципе реализация
> работы простейшего 8-разрядного генератора.
Это открытие заслуживает шнобелевской премии :)
← →
MASTAFA © (2007-06-25 17:02) [39]Сам почитай...
Для начала учебник по русскому. Согласуй предложения так, чтобы их можно было понять без телепатии.
> RS232 - последовательный интерфейс, он не параллельный,
> но частоты передачи у него строго определённая из доступных,
> синхронный он или нет?
Что ты имел ввиду? Думаешь прочитав про стандарт RS-232 и найдя там слово "последовательный" ты что-то понял? Причем здесь то, что COM-порт -порт последовательный?
> Синхронная функция не возвращаеться до окончания операции,
> асинхронная возвращаеться сразу. GetLastError вернёт ERROR_IO_PENDING.
> дальше сам думай, как ждать результата.
Спасибо уже ответили.
> Не путай тёплого с мягким, причём тут старт стоп/бит и синхронность/
> асинхронность?
Почитав учебник по-русскому, почитай любую книжку по аппаратным средствам и узнай насчет байт-ориентрованности асинхронного режима и бит-ориентированности синхронного режима. Я же ничего не говорил про мою аппаратную задачу, может мне надо передать на ЦАП 11 бит информации подряд? А как мне это сделать в асинхронном режиме минимальная единица передаваемой информации которого 1 байт? То есть у меня еще влезут левые старт- и стоп-биты.
> ЗЫ: И вообще почитай хоть что нибудь, а не гони на умных
> людей.
Какими качествами, по-твоему мнению, обладают умные люди? По-моему на форуме - это реальная оценка своих знаний и ответы только по теме. А если уж невтерпеж написать что-нибудь, то хотя бы писали без фраз типа : "ты заблуждаешься". Написал бы: "... по-моему субъективному мнению",- было гораздо лучше. :D. Нездоровое самолюбие одним словом.
Все спасибо за ответы на вопросы (реально помогли), тема закрыта.
← →
Anatoly Podgoretsky © (2007-06-25 17:08) [40]Не путай круглое с красным.
Синхронный режим работы с синронным режимом передачи.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.034 c