Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подземелье Магов
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 01:24 Константин Сергеев
 
 
Во Флориде и в Королевстве сейчас  01:24[Войти] | [Зарегистрироваться]

Обсуждение материала
Асинхронный режим чтения из Com-порта
Полный текст материала


Другие публикации автора: Александр Терехов

Цитата или краткий комментарий:

«... Порядок запуска и работы "службы" (назовем все описываемое ниже так) Com-портов состоит из нескольких достаточно хорошо описанных шагов ... ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]327.3%
 
  Ничего особенно нового и интересного
[2]327.3%
 
  Написано неверно (обязательно укажите почему)
[3]545.5%
 
Всего проголосовали: 11

Оценка стиля изложения

  Все понятно, материал читается легко
[1]450%
 
  Есть неясности в изложении
[2]450%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 8




Смотрите также материалы по темам:
[Работа с модемом] [COM-порт]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 11

06-02-2013 07:28
Автору - огромное спасибо за рабочий пример с исходниками!


25-08-2005 01:23
Написано все понятно, работает под любую винду, и с любыми дудоргами, типа USB в Com лично пробовал, только при преобразовании массива полученных данных, вот эти строки:
If ByteReaded>0 Then
  Begin
    Str:=String(MyBuff);
  End;
допущена грубая ошибка, так делать нельзя, данные будут теряться. Нужно писать так:
  if ByteReaded>0 Then
   begin
     SetLength(Str,ByteReaded+1);
     Move(MyBuff[0],Str[1],ByteReaded);
   end;
А вобще пример расписан хорошо, можно сказать на пальцах.  


02-04-2005 00:57
К тому как уже отмечалось ранее могу добавить, что автор очень зря вскользь упомянул о таймаутах. В описываемом им подходе их настройка принципиальна. Если внешнее устройство шлет непрерывно данные некими пакетами - нарвешься на то, что ReadFile вообще никогда не "вернется" до переполнения буфера драйвера и то если это настроишь. Да и вообще, генерить поток, который тупо (через драйвер конечно) дергает микросхему, в смысле читает ее регистры - дурной тон при наличии SetCommMask и WaitCommEvent.


02-06-2004 12:50
Автором приведен простенький пример. Провереный на WIN95/WIN98, а не WIN2000, UNIX или каких-либо других ОС (автором в статье задавался вопрос по поводу работы программы в WIN95/WIN98). Защиты от "дурака" программа не имеет, что и не являлось  целью статьи. На мой взгляд пример программы может быть использован для отправной точки дальнейшей модернизации.


22-03-2004 16:21
нигде не указано, что в Windows 2000 этот пример не работает. +ошибки работы с потоками.
Сам ищу как заставитьь работать с Com портом Win2k. Если кто-нибудь знает как (либо знает безплатную компоненту) пожалуйста напишите на мыло eaglenn@hotbox.ru
Сообщение не подписано


27-10-2003 21:07
Большое спасибо Вам Александр, я никогда не верил в Windows и все его классы, а также програмирование в нем, и поэтому почти никогда с использованием егг классов программы не писал. Недавно в связи с этим я попал в затруднительное положение, и я очень рад что нашел вашу статью и разобрался с проблемой зависания программы.


09-12-2002 18:25
В добавлении к предыдущему сообщению. (К сожалению не поставил подпись).

Первое сообщение было написано без проверки программы, а теперь очень хочется сказать автору: "Не надо больше писать статейки, а надо купить Рихтера и выучить наизусть или хотя бы просто один раз прочесть и понять. Иначе рекомендую не заниматься больше программированием."

Ошибки:
1.Вызов функции ReadFile завершается с ошибкой 87 (Неверный параметр), т.к. не указан указатель на структуру OVERLAPPED.

2. Зависание программы происходит из-за dead-lock, ожидание потока самого себя в destructor-е.

3. Асинхронный режим - это не создание дополнительных потоков,а использование возможности ОС при выполнении операций ввода-вывода.

4. Форматирование исходного текста и большое количество комментариев сильно затрудняет чтение.

5. Нет проверки результата инициализации com-порта, нет настройки порта на скорость. Непонятны значения для таймаутов.


09-12-2002 17:57
Сама статья и пример абсолютно неинтересны, к тому же содержат некоторые неточности (учитывая замечание выше):
1. Непонятен вызов функции SysErrorMessage
2. Использование функций BeginThread и EndThread абсолютно безопасно
( автор спутал использование функции CreateThread )
3. Функция WaitCommEvent воспринимает как последний параметр указатель на структуру OVERLAPPED, что подразумевает асинхронность.

Вывод: перед тем как писать статьи следует ХОРОШО знать описываемый материал или RTFM.
Сообщение не подписано


09-12-2002 15:17
1. Библиотека VCL не является потокобезопасной. В то же время автор статьи обращается к ряду свойств и компонент формы в дополнительном потоке.
2. Из текста статьи неясно, как же работать с функцией WaitCommEvents.
3. В примере используется синхронный ввод/вывод для файла (порта), открытого с флагом FILE_FLAG_OVERLAPPED, тогда как Microsoft не рекомендует так поступать. В этом случае сообщение об окончании чтения/записи может быть некоректным. См. примечания к ReadFile/WriteFile в MSDN.
4. Скомпилированный пример оказался неработоспособным в Windows NT 4.0 и Windows 2000, а ввод имени несуществующего или занятого други процессом порта приводил к зависанию программы.


08-12-2002 09:00
А зачем это при наличии компонентов AsyncPro?


06-12-2002 18:00
C NT/2000/XP это работает?


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Два кольца, два конца, посередине гвоздик.
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования