Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с COM портом  (Прочитано 22031 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RTR
Гость
« : 14-07-2009 10:55 » 

Добрый день!
Подскажите, пожалуйста, как решить проблемку с COM портом:
  Аппаратура не может связаться с компом под ХР через COM порт, а под 98 работает нормально на том же компьютере.
Спасибо.

« Последнее редактирование: 19-07-2009 06:37 от Sel » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 14-07-2009 10:57 » 

используемые настройки ком-порта в студию )
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 14-07-2009 10:59 » 

Попробуй отключить порт  в системе, а затем включить.
Доступ к порту происходит, видимо, на уровне адресов.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RTR
Гость
« Ответ #3 : 14-07-2009 11:05 » 

Sla,
не помогает
Жаль


Алексей1153++,
скорость 9600
биты данных 8
четность нет
стоповые биты 1
управление потоком Xon/Xoff

диапазон ввода.вывода   03F8-03FF
запрос на прерывание 04



Эти настройки обязательны для аппаратуры
« Последнее редактирование: 14-07-2009 11:20 от Sel » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 14-07-2009 11:29 » 

RTR ну так это не все настройки...

А программа то твоя ? Или нет исходников ?
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-07-2009 11:31 » 

диапазон ввода.вывода   03F8-03FF
запрос на прерывание 04
...
Эти настройки обязательны для аппаратуры
Вот это для внешней аппаратуры никак не может требоваться. 9Х позволяла обращаться к портам/IRQ, NT платформа (к коей естетсвенно принадлежит и XP) - нет. Нужно использовать стандартные функции SDK для работы с портом (как с потоком данных): CreateFile, SetupComm, GetCommState/SetCommState, SetCommMask, EscapeCommFunction, WriteFile/ReadFile, CloseHandle.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 14-07-2009 11:43 » 

такое может сканать на xphome
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #7 : 14-07-2009 12:45 » 

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

RTR, исходники есть?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RTR
Гость
« Ответ #8 : 15-07-2009 15:06 » 

К сожалению исходников нету.
 В 2003 году приехали ребята и установили програмное обеспичение на комп с 98 windows. Но руководство запретило использование 98 и теперь надо ету апаратуру с програмой поставить на ХР. Я пробовал через USB-COM переходник, работает но не стабильно, почти всегда вываливается.
 Те ребята что устанавливали говорят что уже не работают в етом направление и ничем не могут помочь.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 15-07-2009 15:14 » 

>>почти всегда вываливается

в чём это выражается ?

А то опытным путиным мы установили, что у виртуального кома нужно выставить в настройках драйвера таймауты чтения и записи в 300мс - тогда начинает работать стабильно (до этого через раз)
Записан

RTR
Гость
« Ответ #10 : 16-07-2009 07:21 » 

Алексей1153++,
Выдает сообщение что нет связи со шлюзом.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 16-07-2009 07:32 » 

>>Выдает сообщение что нет связи со шлюзом.

и так разом всем всё понятно стало Улыбаюсь Как хоть программа называется ?
Записан

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #12 : 16-07-2009 07:37 » 

Да уж. Скорей всего ничего не получится. Если прога расчитана на виртуальный драйвер (Win9x), то под NT она скорей всего работать не будет никогда. Единственное, что приходит в голову - обратиться к разработчикам драйверов, может они и смогут помочь.

Как альтернатива - попробовать поставить виртуальную машину (VMWare. VirtualPC) с 9х и запустить прожку в ней. В этом случае винь можно рассматривать как платформу, необходимую для работы программы. Безопасности компьютера это не будет угрожать и начальство может спать спокойно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 16-07-2009 13:06 » 

А хваленый режим совместимости ничем не поможет?
Можно с помощью порт-снифера слизать протокол и написать программу с нуля Улыбаюсь
Записан
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #14 : 16-07-2009 14:03 » 

Улыбаюсь Я думаю там не только протокол, а ещё и UI навшено.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 17-07-2009 07:02 » 

Думаю у пользователей по УИ еще больше вопросов накопилось Улыбаюсь)
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #16 : 19-07-2009 13:24 » 

Я пробовал через USB-COM переходник, работает но не стабильно, почти всегда вываливается.

попробуй снижать скорость обмена до минимума.

сильно ли обидеццо руководство, если прога будет работать на W98, живущей в вм-вари, установленном на WXP?
Записан

Back-loz
Гость
« Ответ #17 : 14-09-2009 10:18 » 

Мне, может, тоже кто-нибудь с COM портом поможет?
Объясняю суть проблемы. Пытаюсь разобраться, как работать с COM портом. Написал такой код для проверки в C++ Builder 2009:
DCB ComSetings;
port=CreateFile("COM2",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(port==INVALID_HANDLE_VALUE)
 {
  MessageBox(NULL,"Невозможно открыть последовательный порт","Error",MB_OK);
  CloseHandle(port);
  exit(0);
 }
 ComSetings.DCBlength=sizeof(DCB);
 ComSetings.BaudRate=CBR_115200;
 ComSetings.fBinary=1;
 ComSetings.fParity=false;
 ComSetings.fOutxCtsFlow=false;
 ComSetings.fOutxDsrFlow=false;
 ComSetings.fDtrControl=DTR_CONTROL_DISABLE;
 ComSetings.fDsrSensitivity=false;//??
 ComSetings.fTXContinueOnXoff=true;//
 ComSetings.fOutX=false;
 ComSetings.fInX=false;
 ComSetings.fErrorChar=false;
 ComSetings.fNull=false;
 ComSetings.fRtsControl=RTS_CONTROL_DISABLE;
 ComSetings.fAbortOnError=false;
 ComSetings.fDummy2;//зарезервированно и неиспользуется
 ComSetings.wReserved=0;
 ComSetings.XonLim;
 ComSetings.XoffLim;
 ComSetings.ByteSize;
 ComSetings.Parity=NOPARITY;
 ComSetings.StopBits=2;
 ComSetings.XonChar=255;
 ComSetings.XoffChar=255;
 ComSetings.EofChar;
 ComSetings.EvtChar;
 ComSetings.wReserved1;//заразерезервированно
 if(SetCommState(port,&ComSetings)==false);
 {
  MessageBox(NULL,"Невозможно инициализировать порт","Error",MB_OK);
  CloseHandle(port);
  exit(0);
 }
CloseHandle(port);

Имеется форма и кнопка, данный код выполняется при нажатии на кнопку. Функция SetCommState(port,&ComSetings).
Постоянно возвращает false, не могу понять, в чём причина.
Кто работал с COM портами, подскажите, пожалуйста, что это может быть.
« Последнее редактирование: 14-09-2009 10:35 от Sel » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #18 : 14-09-2009 10:23 » 

а если так
ComSetings.StopBits=ONESTOPBIT

и что возвращает GetLastError() ?
Записан

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #19 : 14-09-2009 11:15 » 

А это что такое?

 ComSetings.XonLim;
 ComSetings.XoffLim;
 ComSetings.ByteSize;

 ComSetings.EofChar;
 ComSetings.EvtChar;

Сразу возникает вопрос про яблоки и Буратино.

зы Чтобы подобных проблем не возникало, лучше сначала получить настройки порта.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Back-loz
Гость
« Ответ #20 : 15-09-2009 04:24 » 

Цитата
а если так
ComSetings.StopBits=ONESTOPBIT

и что возвращает GetLastError() ?
пробовал я так писать кломпилятор ругался что нет такой константы ONESTOPBIT тогда я порылся в билдеровских библиотеках и нашел следующее описание с коментом: BYTE StopBits; /* 0,1,2 = 1, 1.5, 2
после чего и стал собственно говоря писать как пишу. GetLastError() кстати возвращает 87 кто-нибудь знает что это может означать??
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #21 : 15-09-2009 06:17 » 

во первых, внемли Джону - всё правильно, сначала надо считать текущие настройки с порта, потом поменять в структуре и забацать обратно.

Константы нет - поставь 1 Улыбаюсь Написано же - один стоп-бит

87 - "Параметр задан неверно. "
Записан

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #22 : 15-09-2009 06:25 » 

GetLastError() кстати возвращает 87 кто-нибудь знает что это может означать??

А в помощь заглядывать не пробовал? Или ты думешь, что кто-нить держит в голове все 15999 ошибок?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
lag
Участник

ru
Offline Offline

« Ответ #23 : 15-09-2009 06:38 » 

И зачем "менять" всю структуру DCB? Ведь скорее всего надо будет только поменять baudrate. Посмотри в отладке - что у тебя уже есть.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #24 : 15-09-2009 06:46 » 

для определения ошибки по коду - есть утилита ERRLOOK.exe в составе студии )

lag, никто структуру всю менять и не хочет, прочитали, поменяли скорось, записали
Записан

lag
Участник

ru
Offline Offline

« Ответ #25 : 15-09-2009 07:46 » 

Алексей. Это я не тебя поправляю, а топикстартера, смотри пост 19.  Улыбаюсь
Записан
Back-loz
Гость
« Ответ #26 : 15-09-2009 08:08 » 

Всё, всем спасибо, данную проблему удалось решить. Проблема была в неправильной установке параметров DCB. После того, как поставил правильные значения, всё заработало.
« Последнее редактирование: 15-09-2009 08:26 от Sel » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines