HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > COM порт не открывается
Припервом запуске программы
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



COM порт не открывается

В общем, суть вопроса вот в чем. Я открываю СОМ порт.

C++ Source Code:
condev = CreateFile(portName.c_str(), 					GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
DCB dcb = {0};
if (condev == INVALID_HANDLE_VALUE) { 	 CloseHandle(condev); 	 ShowMessage("Не удалось открыть порт");   	} 	else бла бла остальной код программы{


Так вот, после перезагрузки компьютера моя программа отказывается открывать COM порт до тех пор, пока я не открою порт и пошлю посылку какой-нибудь сторонней прогой. Например COM Port Toolkit . В чем моет быть проблема ума не приложу. После того как воспользовался сторонней программой, моя начинает всё открывать, посылать и принимать посылки. Подскаите пожалуйста.

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 101891

Старое сообщение 06-07-2012 12:50
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34564
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
AntiPlayer писал:
portName.c_str()

Чему равно точно?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 101896

Старое сообщение 06-07-2012 13:39
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



Помнится с комами был аналогичный занятный глюк модемов. То есть зависнет, пока не перезагрузишь - фиг зайдешь в интернет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 101898

Старое сообщение 06-07-2012 13:42
-
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



Цитата:
XaeroX писал:
Чему равно точно?


C++ Source Code:
i=StrToInt(Text);
const AnsiString portName = "COM"+IntToStr(i);

Соответственно в моей программе эта переменная от COM1 до COM9.

Запись кода в виде:
C++ Source Code:
condev = CreateFile("COM3",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);


не дает никаких результатов.



Добавлено 06-07-2012 в 18:53:

Цитата:
Дядя Миша писал:
Помнится с комами был аналогичный занятный глюк модемов. То есть зависнет, пока не перезагрузишь - фиг зайдешь в интернет.


Там глюк с модемами, а у меня именно с моей программой. Две аналогичные программы цепляются без проблем.
По каким то причинам порт возвращает INVALID_HANDLE_VALUE.

Я вообще за С++ недавно. Пришлось по работе. Еще и в RAD Studio. Азов мне немного не хватает, очевидно. Как я намучался с unsigned char. Если посоветуете заодно литературу грамотную, буду благодарен.

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 101904

Старое сообщение 06-07-2012 14:53
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34564
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Может, дело в OPEN_EXISTING? Что если убрать?

Цитата:
AntiPlayer писал:
Еще и в RAD Studio

Так это же Delphi...

__________________

Сообщить модератору | | IP: Записан
Сообщение: 101905

Старое сообщение 06-07-2012 15:05
-
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



Цитата:
XaeroX писал:
Так это же Delphi...


В дистре CodeGear RAD Studio 2009 разом идет Delphi и C++ Builder.

Цитата:
XaeroX писал:
Может, дело в OPEN_EXISTING? Что если убрать?

Надо будет попробовать. Вот только теперь до прибора добраться надо.

Просто самое интересное, что я даже приблизительно не могу понять какой может быть затык. Потому что медот работы с портами стандартен до невозможного.

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 101910

Старое сообщение 06-07-2012 15:28
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34564
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


AntiPlayer
Возможно, проблема вовсе не в том коде, что ты привёл.
А может быть, проблема вообще в системе.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 101911

Старое сообщение 06-07-2012 15:31
-
PomanoB
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 157

Рейтинг



Мб ты его не закрываешь....

Сообщить модератору | | IP: Записан
Сообщение: 101912

Старое сообщение 06-07-2012 15:31
- За что?
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



Цитата:
XaeroX писал:
А может быть, проблема вообще в системе.


Было бы очень классно. Протестирую на эмуляторе КОМ порта.
Я просто думал, может кто-то знает, что такого могут делать прочие программы с портом, что моя программа после них начинает работать


Цитата:
PomanoB писал:
Мб ты его не закрываешь....


Как это не тупо, я закрываю его, даже если он не открывается.

CloseHandle(condev);.

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 101915

Старое сообщение 06-07-2012 16:38
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34564
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
AntiPlayer писал:
Я просто думал, может кто-то знает, что такого могут делать прочие программы с портом, что моя программа после них начинает работать

Первая мысль - инициализировать
Может, в него надо какие-то управляющие команды заслать сначала?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 101945

Старое сообщение 07-07-2012 05:22
-
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



XaeroX

Скорее всего ты прав. Буду шаманить с настройками dcb.

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 101970

Старое сообщение 07-07-2012 11:04
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Может, в него надо какие-то управляющие команды заслать сначала?

Совершенно верно. Только не управляющие команды, а донейт. И не в ком-порт, а дяде Мише, и не сначала, а регулярно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 101978

Старое сообщение 07-07-2012 12:54
-
PomanoB
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 157

Рейтинг



Цитата:
AntiPlayer писал:
Как это не тупо, я закрываю его, даже если он не открывается.

Я имею ввиду после предыдущего открытия..
У меня так было, когда программа вылетела и не закрыла порт потом уже не открывается

Сообщить модератору | | IP: Записан
Сообщение: 102025

Старое сообщение 07-07-2012 19:48
- За что?
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



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

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 102036

Старое сообщение 08-07-2012 00:01
- За что?
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



В общем разобрался.
Порт действительно надо инициализировать. Но по каким-то причинам инициализация порта не происходила при сохранении параметров командой SetCommState. Почему - не знаю, уже не было времени отлавливать баг. Но его придется отлавливать позже.
пришлось в принудительном порядке конфигурировать порт с помощью cmd команд. В итоге при запуске программы запускается .bat файл с командами:

mode com% baud=9600 stop=2 data=8 parity=n

Костыли, такие костыли. Не удивлюсь если это "прикол" собственно RAD Studio

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 102114

Старое сообщение 09-07-2012 10:45
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 21:07. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > COM порт не открывается
Припервом запуске программы
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024