Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Форум: Техническая поддержка

Скорость обмена данными с Е-24

Вы не вошли.

 Поиск | Регистрация | Вход 

Дима Полухин
18.04.2001 08:31:51
#1

Гость

Скорость обмена данными с Е-24

Купленный у Вас модуль Е-24 работает ТОЛЬКО на скорости 19200, на скоростях 9600 и 38400 с модуля идут данные, но совершенно хаотичные (скорее всего какой-то мусор), на остальных скоростях (2400, 4800 и 57600) ReadFile не возвращает управление (т.е. ждет данных из порта, но не получает их). Это "особенность" конкретного модуля, неправильная работа с ним или еще что-то?

Теперь о том как проводилась проверка модуля. К сожалению бинарные модули примера работы с Е-24 даже не запускаются, так как DLL экспортирует функции с неиспорченными именами, а EXE их импортирует с испорченными (это не считая того, что они собраны в отладочном режиме и требуют cw3230.dll). Поэтому пришлось перенести пример на MS Visual C++ 6.0. Это оказалось не сложно (переопределение с помощью препроцессора _export в __declapec(dllexport|dllimport), поменять местами спецификаторы WINAPI и _export), проблемы вызвала только функция sleep, так как в win32 api она с большой буквы. После таких модификаций пример успешно собирается. Однако в примере скорость обмена с Е-24 ставится 57600, но на это скорости модуль, как я уже говорил, не работает. Поэтому были перепробованы все возможные скорости, результаты приведены в начале вопроса.

Заранее благодарен за ответ.

18.04.2001 08:51:19
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Скорость обмена данными с Е-24

Проблема известна. Но почему так случилось непонятно пока.

Дима Полухин
18.04.2001 09:09:51
#3

Гость

Re: Скорость обмена данными с Е-24

Насчет неработоспособности бинарников примера все просто, dll собрана на день позже exe (и скорее всего из других исходников).

Но основная проблема, конечно же со скоростью обмена данными. Жду с нетерпением smile

Спасибо за оперативный ответ.

Дима Полухин
19.04.2001 09:07:01
#4

Гость

Re: Скорость обмена данными с Е-24

Хотелось бы понять какие прогнозы на исправление данного дефекта? Из-за этого дефекта максимальная скорость сбора уменьшается в ТРИ РАЗА! Это тоже что купить модем на 56К, который работает только на 19200...

19.04.2001 10:22:56
#5

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Скорость обмена данными с Е-24

В течении ближайшей недели будем смотреть и устранять.

Дима Полухин
05.05.2001 16:21:57
#6

Гость

Re: Скорость обмена данными с Е-24

Уже прошло ДВЕ недели, а пока никакого ответа. Хотелось бы знать что будет с этим дефектом дальше.

Vlad
07.05.2001 10:42:45
#7

Гость

Re: Скорость обмена данными с Е-24

Павел в отпуске, выйдет 10.05.2001.

Димаа Полухин
22.05.2001 18:40:37
#8

Гость

Re: Скорость обмена данными с Е-24

Уже прошло больше месяца, а ответа в чем дело и, главное, когда это будет исправленно все нет. Что с этм дефектом, или про него просто благополучно забыли?

Дима Полухин
29.05.2001 08:41:34
#9

Гость

Re: Скорость обмена данными с Е-24

Для того чтобы на про этот дефект начали отвечать его надо повесить опять в начало списка создав новую ветвь обсуждений?

Или Павел еще не вернулся из отпуска?

31.05.2001 14:42:27
#10

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Скорость обмена данными с Е-24

Поправил библиотеку.
Если лень качать свежую версию то в библиотекек
в InitE24
....
   switch(Baud)
   {
   case 0: ComBaud=2400;break;
   case 1: ComBaud=4800;break;
   case 2: ComBaud=9600;break;
   case 3: ComBaud=19200;break;
   case 4: ComBaud=38400;break;
   case 5: ComBaud=57600;break;
   default: ComBaud=19200;
   }

   ConfigE24COM((DWORD)hCom, Baud);
!!!!!!!!!!!!!!!!!
   sleep(1);  //добавить задержку
!!!!!!!!!!!!!!!!!
   dcb.BaudRate = ComBaud;
   dcb.ByteSize = 8;
   dcb.Parity = NOPARITY;
   dcb.StopBits = ONESTOPBIT;
   dcb.fDtrControl = DTR_CONTROL_DISABLE;
   dcb.fRtsControl = RTS_CONTROL_ENABLE;
   fSuccess = SetCommState( hCom, &dcb);
   if(!fSuccess) return 1;   // fail
....

Должно работать до скорости 38400. 57600 - только с коротким кабалем связи.

31.05.2001 14:50:25
#11

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Скорость обмена данными с Е-24

Этот sleep не тоже что и Sleep - sleep(1) это задержка на 1 сек.

Виктор Корниенко
31.05.2001 20:34:59
#12

Гость

Re: Скорость обмена данными с Е-24

? Уточните, пожалуйста, характистики Е-24?
22-bit отсчёты могут собираться по каждому из 4-х каналов со скоростью ~10Гц или всё же ~250 Гц?
то есть, частота преобразования === частота оцифровки?
может это моя дремучесть

Дима Полухин
01.06.2001 08:23:49
#13

Гость

Re: Скорость обмена данными с Е-24

Спасибо, на выходных попробую.

"только с коротким кабелем связи" - это сколько метров или сантиметров?

По моим расчетам максимальная частота сбора одновременно с четырех каналов при скорости обмена 57600 должна быть 360 Гц (если я ошибаюсь, то Павел поправит). Но следует отметить, что на таких скоростях оцифровки число значащих разрядов будет существенно меньше чем 22-бита. В инструкции к Е-24 есть табличка значимости бит в зависимости от скорости сбора и коэффициента усиления, но она только до 250 Гц.

Vlad
01.06.2001 09:19:42
#14

Гость

Re: Скорость обмена данными с Е-24

1. Полную табличку значимости бит Вы можете посмотреть в PDF файле по ссылке:
http://products.analog.com/products/inf … uct=AD7714

2. Насчет длины кабеля Павел выразился не совсем точно. Устойчивая работа на скорости 57600 зависит от длины кабеля и от аппаратной реализации COM порта на компьютере. На большинстве Notebook 57600 работает и с длинным кабелем, на PC длина должна быть не более 50-60 см.

Дима Полухин
06.06.2001 16:36:27
#15

Гость

Re: Скорость обмена данными с Е-24

Спасибо, еще один sleep(1) действительно помог, т.е. на 38400 модуль работает и с длинным кабелем стабильно, а на 57600 видимо действительно нужен более короткий кабель, так как есть сбои в посылаемых данных.

В документации нет ни слова, о том когда и сколько надо делать sleep, сейчас получается, что в функции InitE24 два sleep(1) и один в функции Stop, т.е. получается 3 секунды – это минимальное время, которое работает InitE24. Для приложений с маленьким временем отклика это очень много, поэтому хотелось бы понять где, когда и насколько надо делать sleep. На слабых машинах моя программа общения с модулем E24 "виснет" при чтении из COM порта, возможно это связано с тем, что где-то не хватает sleep.

07.06.2001 08:33:36
#16

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Скорость обмена данными с Е-24

Важен тот последний sleep который я добавил -
физика глюка в том что я посылаю пачку в порт
и когда фифо порта уже пуст но последний байт
еще в регистре передатчика на быстрых машинах я успеваю
уже перепрограммировать порт на другую скорость и байт
портится - вроде так. Задержку в секунду я поставил тк
это было проще всего - ее можно уменьшить.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск