Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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)&#133


 
Германн ©   (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
1-1179490447
stud
2007-05-18 16:14
2007.07.22
композитный отчет


11-1165928861
Trible
2006-12-12 16:07
2007.07.22
Наследование от TControl. Почему почему нельзя вводить переменные


1-1179389007
Magedon
2007-05-17 12:03
2007.07.22
XP manifest что-то не работает.


6-1166595123
Vasya111
2006-12-20 09:12
2007.07.22
Подскажите POST на странице с Javascript


2-1182745639
Washington
2007-06-25 08:27
2007.07.22
Выделение записей в ListBox e





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский