Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с виртуальным COM портом в Windows 7

74K
28 сентября 2011 года
ScaterPiller
1 / / 21.09.2011
В общем начинаю писать систему управления роботом NXT. Там данные должны по Bluetooth передаваться из робота в комп, в компе должен быть виртуальный ком порт, из которого данные ловятся в программе и обрабатываются. В общем вот часть кода, открывающая и инициализирующая порт.

Код:
HANDLE OpenPort() {
  HANDLE hPort=CreateFile(L"COM11",
                           GENERIC_READ,
                           0,
                           NULL,
                           OPEN_EXISTING,
                           FILE_FLAG_OVERLAPPED,
                           NULL);
  if(hPort==INVALID_HANDLE_VALUE) ErrorMessage("Open port!!!!!!!");
   
  DCB dcb; dcb.DCBlength=sizeof(DCB);
  if(!GetCommState(hPort, &dcb)) ErrorMessage("Read port");
  dcb.BaudRate=CBR_115200;
  dcb.ByteSize=8;
  dcb.Parity=NOPARITY;
  dcb.StopBits=ONESTOPBIT;
  dcb.fParity=FALSE;
 // dcb.fDtrControl  = DTR_CONTROL_DISABLE;
 // dcb.fRtsControl  = RTS_CONTROL_ENABLE;
  if(!SetCommState(hPort, &dcb)) ErrorMessage("Error configuration1");
 
  COMMTIMEOUTS commtimeouts={0};
  commtimeouts.ReadIntervalTimeout=500;
  commtimeouts.ReadTotalTimeoutConstant=0;
  commtimeouts.ReadTotalTimeoutMultiplier=0;
  commtimeouts.WriteTotalTimeoutConstant=0;
  commtimeouts.WriteTotalTimeoutMultiplier=0;
  if(!SetCommTimeouts(hPort, &commtimeouts)) ErrorMessage("Error configuration2");
  return hPort;
}


В общем, хотя порт в системе 100% есть (открывал его Матлабом и КоммТестом), эта прога выдает сообщение "Open Port!!!!". Мною эта прога запускалась на VS 2005 под WinXP, где прекрасно работала и на VS2010 под Win7, где вылетает собственно ошибка. Кстати существующий порт COM1 в системе эта прога открывает везде. А COM11 нет.
14
28 сентября 2011 года
Phodopus
3.3K / / 19.06.2008
ну для начала есть GetLastError()
14
28 сентября 2011 года
Phodopus
3.3K / / 19.06.2008
во вторых есть MSDN, без вдумчивого чтения коего вообще здесь лучше не появляться
[QUOTE=MSDN]
To specify a COM port number greater than 9, use the following syntax: "\\.\COM10". This syntax works for all port numbers and hardware that allows COM port numbers to be specified.
[/QUOTE]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог