У меня есть линейная стадия Zaber, для которой я разрабатываю серверную часть C++, чтобы интегрировать ее в свою структуру.
Я установил Zaber API, следуя инструкциям с веб-страницы Zaber. Установщик фактически генерирует dll, библиотеку и заголовки, необходимые для моего бэкенда, и я уверен, что моя конфигурация CMake верна, потому что я могу создавать экземпляры объектов из Zaber API.
Итак, теперь я пытаюсь в своем фреймворке пройти их первый пример кода:
// I commented out the following block:
// - enableDeviceDbStore() is supposed to allow the library to cache
// information from the online database
// - I don't need the online db
// - when I call it, it throws a "string too long" exception.
// try
// {
// zaber::motion::Library::enableDeviceDbStore(".");
// }
// catch (std::exception& e)
// {
// LogError << e.what();
// }
try
{
_connection = zaber::motion::ascii::Connection::openSerialPort("COM6");
// this also throws a "string too long" exception
}
catch (std::exception& e)
{
std::cout << e.what() << std::endl;
}
std::vector<zaber::motion::ascii::Device> deviceList;
try
{
deviceList = _connection.detectDevices(false);
// this throws a "Connection has been closed" exception
}
catch (std::exception& e)
{
std::count << e.what() << std::endl;
}
std::count << "Found " << deviceList.size() << " devices." << std::endl;
Проблема в том, что когда я использую Zaber Launcher (их пользовательский интерфейс, который позволяет управлять подключенным этапом), порт «COM6», и я обязательно закрыл соединение в Zaber Launcher, прежде чем пытаться подключиться к моей структуре.
Я также пытался запустить их предварительно настроенный пример кода C++ (решение VS17), с теми же проблемами (за исключением того, что их пример не перехватывает исключения, поэтому он просто падает).
Ни одно из моих исключений не соответствует их разделу устранения неполадок.
Я не знаю, как действовать дальше или как интерпретировать сообщение об ошибке «Слишком длинная строка», учитывая, что я уверен в своем порте подключения.
Я подготовлю это и соответствующим образом обновлю свой вопрос!
Спасибо @ZaberCS, на самом деле попытка создать работающий минимальный пример помогла мне решить мою собственную проблему. Я пропускал шаги, пытаясь интегрировать свою сцену.
Рад слышать! Не стесняйтесь связаться с нами по электронной почте нашей службы поддержки клиентов; мы рады помочь с устранением неполадок и стремимся быть очень отзывчивыми (также всегда рады помочь на Stack Exchange).
Zaber предоставляет dll-файлы как для отладки, так и для целевого типа выпуска, и я сначала проигнорировал его, используя релизные dll-файлы для моей конфигурации отладки.
Исправление моих CMakeLists и использование правильной dll для правильных целевых типов решили мою проблему (я могу контролировать свою сцену).
Не могли бы вы указать, какую IDE вы используете и какую версию? И какая версия Windows? Если вы можете прикрепить ZIP-файл со всеми файлами проекта, это также может помочь воспроизвести и решить проблему.