ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Образ Windows CE  (Прочитано 7020 раз)

0 Пользователей и 1 Гость просматривают эту тему.

bva_rzn

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 21
Образ Windows CE
« : 05 Октября, 2012, 12:47:49 »

Добрый день.

Вопрос такого плана. До этого проблем с COM-портами никогда не было.
Поставил перемычку с Tx на Rx COM3.

    ADIS_ver  = fopen("ADIS.txt","w");
    hCom=CreateFile(TEXT("COM3:"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
       
    dcb.DCBlength       = sizeof(DCB);
    dcb.BaudRate        = 19200;
    dcb.fBinary         = TRUE;
    dcb.fDtrControl     = DTR_CONTROL_ENABLE;
    dcb.fRtsControl     = RTS_CONTROL_ENABLE;
    dcb.fAbortOnError   = TRUE;
    dcb.ByteSize        = 8;
    dcb.Parity          = NOPARITY;
    dcb.StopBits        = ONESTOPBIT;
   
    cto.ReadIntervalTimeout=10;
    cto.ReadTotalTimeoutMultiplier = 1;
    cto.ReadTotalTimeoutConstant = 100;
    cto.WriteTotalTimeoutMultiplier = 0;
    cto.WriteTotalTimeoutConstant = 0;

    SetCommState(hCom, &dcb);      
    PurgeComm(hCom,PURGE_TXCLEAR);
    PurgeComm(hCom,PURGE_RXCLEAR);

    SetupComm(hCom,1024,1024);
    SetCommMask (hCom, EV_RXCHAR );

    while(p)
    {
      buf_com_send[0] = 1;
      buf_com_send[1] = 3;

      n = WriteFile (hCom, buf_com_send, sizeof(buf_com_send), &dwBytesWrite, 0);

      SetCommMask (hCom, EV_RXCHAR );
      WaitCommEvent (hCom, &dwCommModemStatus, 0);   

      n = ReadFile (hCom, buf_com_rec, sizeof(buf_com_rec), &dwBytesReceived, 0);
      fprintf(ADIS_ver,"%i\n",ADIS_data.s.Version);

      PurgeComm(hCom,PURGE_RXCLEAR);
      
      if((c++)>100) {p = 0; fclose(ADIS_ver);}
    }

Компилирую проект в VS2005. Переношу на Тион-Про270, там запускаю и Windows CE наглухо зависает. Проблема решается, если снять питание с платы.

До этого все проекты с COM-портом на Тионе-Про270 шли без проблем, всё работало.
Плату Вам возил, сказали, что всё нормально.

Так вот вопрос, в чём может быть проблема?
Может эта проблема быть связана с тем, что брал демонстрационный образ с Вашего сайта, где написано, что они работают ограниченное время, если да, то сколько стоит лицензированный образ для Windows CE 6.0?

Спасибо.
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Образ Windows CE
« Ответ #1 : 05 Октября, 2012, 16:35:38 »


COM3 не занят под отладочный порт?
Записан

bva_rzn

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 21
Re: Образ Windows CE
« Ответ #2 : 05 Октября, 2012, 17:26:35 »

нет, HANDLE порта отличный от INVALID_HANDLE_VALUE.
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Образ Windows CE
« Ответ #3 : 12 Октября, 2012, 13:52:11 »

Прикрепил к письму проект с этим примером.
У меня Тион не зависает. При запуске отправляется 100 пакетов по 100 байт, потом появляется окно программы (через 40 секунд после старта).

Попробуйте запустить у себя на Тионе.
Записан

bva_rzn

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 21
Re: Образ Windows CE
« Ответ #4 : 16 Октября, 2012, 16:51:28 »

Добрый день!

Разобрался, заработало.
Ещё вопрос.

Для потока считывания данных с COM-порта ставлю приоритет 0;
CeSetThreadPriority(hThread,0);

При этом из COM-порта периодически (около 1,2 с) считываю "битые" данные. При уменьшении приоритета потока количество "битых" данных увеличивается.

Вопрос, можно ли избавиться от сбоев при приёме данных через COM-порт? Эту проблему решаю эксраполяцией нужных данных, но всё-таки, хочется разобраться. И не опасно ли (в плане зависания системы) использовать приоритет 0?

Спасибо.

Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: Образ Windows CE
« Ответ #5 : 17 Октября, 2012, 18:08:14 »

Приоритет ставить в 0 не рекомендуется, об этом написано в документации на ОС. Чем это чревато - сложно сказать.

Попробуйте читать в однопоточном режиме.

При надетой перемычке Rx-Tx тоже есть ошибки? При изменении скорости?
Записан