Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 31.10.2017, 19:18   #1
Kenny™
Новичок
 
Регистрация: 31.10.2017
Сообщений: 2
Репутация: 10
Вопрос Загадка работы com-port с ReadFile и DCB structure после MS Hyper-Terminal

Доброго времени суток!

Столкнулся с непонятной проблемой.
Имеется сканер штрих-кодов CipherLab 1000.
Он настроен корректно, забегу вперед.
Для чистоты эксперимента удаляем порт из системы, переустанавливаем.

Смотрим, что у нас в ОС.
ОС.PNG
Далее делаем

GetCommState(hCom, &dcb);

Смотрим результат:
DEF-1.PNG
Уже странно...

Ладно, присваиваю свои значения, и отправляю...

SetCommState(hCom, &dcb);

Смотрю результат...
REZ-1.PNG
Вроде не плохо, под сканер...

Но вот не задача, сканирую, ничего не происходит... Висит и висит
ReadFile(hCom, &Buffer, 100, &dwBytesOfRead, NULL)

Никакой реакции....

А теперь самое странное!
Запускаю например MS Hyper Terminal просто connect к порту, да же не считываю данные сканером, закрываю программу.

Запускаю заново свою программу, проверяю состояние структуры... Она Аналогична. Какие настройки порта мог сменить Hyper Terminal. И как их менять мне?
REZ-2.PNG

И о чудо... Моя программа работает, никаких подвисаний, читает "файл" (порт) летом... Штрих код прилетает, всё хорошо, всё корректно.

Не могу понять в чем дело, заметил что запись идет успешно в любом случае, но там то это бесполезно, это же сканер...

Какие мысли? где искать проблему?
Kenny™ вне форума   Ответить с цитированием
Старый Вчера, 12:34   #2
Kenny™
Новичок
 
Регистрация: 31.10.2017
Сообщений: 2
Репутация: 10
По умолчанию [Решено]

Проблема, решена. Конечно же, про COMMTIMEOUTS забыл... Я то и смотрю, что Hyper-Terminal ее инициализирует в порт, а моя программа нет.

Сделал так...

Цитата:
#define TIMEOUT 0

CommTimeOuts.ReadIntervalTimeout = 10;
CommTimeOuts.ReadTotalTimeoutMultip lier = 0;
CommTimeOuts.ReadTotalTimeoutConsta nt = TIMEOUT;
CommTimeOuts.WriteTotalTimeoutMulti plier = 0;
CommTimeOuts.WriteTotalTimeoutConst ant = TIMEOUT;
Kenny™ вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо подкинуть жёсткий диск в hyper-v v4567 Windows 1 12.06.2017 23:38
Освобождение памяти после работы потока denis76560 Общие вопросы Delphi 23 16.12.2016 17:55
Виртуальные выделенные сервера Hyper-V Bustle Железо 3 22.01.2011 05:06
Структура DCB yuta_86 Общие вопросы Delphi 4 20.12.2010 11:57
Com-порт. DCB ccolg Работа с сетью в Delphi 2 15.07.2009 10:38


15:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru