Я использую пирометры Optris серии CT. С точки зрения аппаратного обеспечения они используют интерфейс USB, а с точки зрения программного обеспечения они используют связь через COM-порт. Раньше я работал с более старыми версиями этих пирометров, и все было хорошо. Но теперь у меня есть новое устройство, и мой код (C ++ .NET) теперь работает с ним. Используя Free USB анализатор, я вижу, что данные отправляются на устройство, но они не реагируют ни на какие команды.
То, что я уже проверил (внимательно!):
- Я использую правильные цифровые команды
- Я использую правильные настройки последовательного порта, и порт открывается
- Оба программных продукта производителя работают нормально! Итак, устройство, кабели и прочее в порядке
- Служба поддержки Optris сказала мне, что с точки зрения разработчика ничего не изменилось по сравнению с предыдущими устройствами
Единственное, что отличает старые устройства от новых, это скорость передачи данных. Раньше это было 9600, а теперь это 115200. Так что, похоже, проблема может быть в этом.
Вот также части моего кода:
В конструкторе класса:
sp = gcnew SerialPort(ComPort, 115200, Parity::None, 8, StopBits::One);
Когда я начинаю приобретать:
sp->DtrEnable = true;
sp->DataReceived += gcnew SerialDataReceivedEventHandler(this, &Pyrometer::OnDataReceived);
sp->BaseStream->Flush();
ThreadPool::QueueUserWorkItem(gcnew WaitCallback(this, &Pyrometer::callBack), sp);
В обратном вызове:
Thread::Sleep(500);
sp->Write(gcnew array<wchar_t> {0x52, 0x01, 0x53}, 0, 3); // Burst mode
Я также пытался увеличить время пробуждения - безрезультатно.
Кто-нибудь знает, в чем может быть проблема? Я потерял много времени на эту проблему. Большое спасибо!