Использование DLL производителя для управления шаговым контроллером через USB с помощью C ++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Использование DLL производителя для управления шаговым контроллером через USB с помощью C ++

Сообщение Anonymous »

ВВЕДЕНИЕ
Я перечитываю себя C ++ после того, как я получил урок колледжа. Недавно я приобрел ARCUS Performax PMX-4EX-SA-TB9 контроллер двигателя, который имеет USB-соединение, которое я планирую использовать. Компания предоставляет программное обеспечение для управления шагом вручную, используя свой собственный код, а также предоставляет терминал в своем программном обеспечении, где вы можете отправлять отдельные строки кода контроллеру для управления шагом. Вы можете контролировать ускорение и максимальную скорость и всевозможные вещи. С этим было весело играть, но теперь я хочу пойти дальше. В онлайн -руководстве рассказывается об использовании C ++, чтобы написать свои собственные программы для Steepper, и я загрузил файлы, которые мне нужны. У меня есть файл DLL, файл LIB и файл заголовка. Таким образом, я узнал, что файл DLL представляет собой библиотеку динамических ссылок, которая используется во время выполнения исполняемого файла. Я прочитал файл LIB и файл заголовка и нашел то, что, как мне кажется, являются объявлениями о функциях в файле заголовка, которые напоминают некоторые команды двигателя. Я вставлю файл заголовка ниже. < /p>

Мой вопрос < /p>


Могу ли я использовать файл DLL вместе с LIB и заголовком для управления этим устройством, используя то, что я вижу в функциях в файле заголовка? Как мне все это загрузить? Кто -нибудь захочет написать небольшой маленький пример, используя функцию fnperformaxCommordove, включенную ниже? Чтобы я мог пойти оттуда? Я использую Visual Studio C ++ 2013, и я занимался онлайн -учебниками по созданию и использованию DLL, который я сделал сам, но все они кажутся такими простыми по сравнению с этим. _declspec (dllexport) определение, а не версия импорта. Все объявления функции начинаются как «bool», затем «recumentaxcom_api», а затем «_stdcall», и я только привык видеть тип, а затем имя функции, затем аргументы в скобках. Что означают «recumentax_api» и «_stdcall» перед всеми различными функциями? Я понимаю, что DWORD - это двойное слово и является 32 -битным целым числом, но некоторые из аргументов просят оси, такую ​​как x, y и z ... зачем им нужны число, когда они могли бы просто попросить об этом? Большое спасибо всем, кто может помочь мне с любой информацией. Я так сильно хочу научиться использовать это. #ifdef PERFORMAXCOM_EXPORTS
#define PERFORMAXCOM_API __declspec(dllexport)
#else
#define PERFORMAXCOM_API __declspec(dllimport)
#endif

extern PERFORMAXCOM_API int nPerformaxCom;

#ifdef __cplusplus
extern "C" {
#endif

PERFORMAXCOM_API int fnPerformaxCom(void);

//USB reset

BOOL PERFORMAXCOM_API _stdcall fnPerformaxComUSBReset(IN HANDLE pHandle);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComFlush(IN HANDLE pHandle);

BOOL PERFORMAXCOM_API _stdcall fnPerformaxComGetNumDevices(OUT LPDWORD lpNumDevices);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComGetProductString(IN DWORD dwNumDevices, OUT LPVOID lpDeviceString, IN DWORD dwOptions);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComOpen(IN DWORD dwDeviceNum, OUT HANDLE* pHandle);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComClose(IN HANDLE pHandle);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetTimeouts(IN DWORD dwReadTimeout, DWORD dwWriteTimeout);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSendRecv(IN HANDLE pHandle, IN LPVOID wBuffer, IN DWORD dwNumBytesToWrite,IN DWORD dwNumBytesToRead,OUT LPVOID rBuffer);

signed int PERFORMAXCOM_API _stdcall fnPerformaxMove(IN HANDLE pHandle,
IN int commandCode,
IN int axes,
IN int moveDir,
IN long *value,
IN int modelCode);

signed int PERFORMAXCOM_API _stdcall fnPerformaxCommandReply(IN HANDLE pHandle,
IN char *command,
IN char *reply);

signed int PERFORMAXCOM_API _stdcall fnPerformaxIO(IN HANDLE pHandle,
IN int commandCode,
IN int bitNumber,
IN long *value,
IN int modelCode);

signed int PERFORMAXCOM_API _stdcall fnPerformaxMotorStat(IN HANDLE pHandle,
IN int commandCode,
IN int axes,
IN long *value,
IN int modelCode);

signed int PERFORMAXCOM_API _stdcall fnPerformaxSpeedAccel(IN HANDLE pHandle,
IN int commandCode,
IN int axes,
IN long *value,
IN int modelCode);

signed int PERFORMAXCOM_API _stdcall fnPerformaxGeneral(IN HANDLE pHandle,
IN int commandCode,
IN int axes,
IN long *value,
IN int modelCode);

long PERFORMAXCOM_API _stdcall fnPerformaxComGetAxisStatus(IN HANDLE pHandle,DWORD dwAxisNumber);
long PERFORMAXCOM_API _stdcall fnPerformaxComGetPulseSpeed(IN HANDLE pHandle,DWORD dwAxisNumber);
long PERFORMAXCOM_API _stdcall fnPerformaxComGetPulsePos(IN HANDLE pHandle,DWORD dwAxisNumber);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetPulsePos(IN HANDLE pHandle,DWORD dwAxisNumber, DWORD pos);
long PERFORMAXCOM_API _stdcall fnPerformaxComGetEncoderPos(IN HANDLE pHandle,DWORD dwAxisNumber);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetEncoderPos(IN HANDLE pHandle,DWORD dwAxisNumber, DWORD pos);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetPolarity(IN HANDLE pHandle,DWORD dwAxisNumber,DWORD dwPolarity);
long PERFORMAXCOM_API _stdcall fnPerformaxComGetPolarity(IN HANDLE pHandle,DWORD dwAxisNumber);
long PERFORMAXCOM_API _stdcall fnPerformaxComGetDIOSetup(IN HANDLE pHandle);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetDIOSetup(IN HANDLE pHandle, DWORD dio_setup);
long PERFORMAXCOM_API _stdcall fnPerformaxComGetDIO(IN HANDLE pHandle);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComGetDIOBit(IN HANDLE pHandle,DWORD bitn);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetDIO(IN HANDLE pHandle,DWORD dio_value );
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComSetDIOBit(IN HANDLE pHandle,DWORD bitn,DWORD bitv );
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComDoHome(IN HANDLE pHandle,
DWORD axis,
DWORD dir,
DWORD low_speed,
DWORD high_speed,
DWORD accel_time,
DWORD decel_time,
DWORD search_mode,
DWORD ramp_mode);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComDoMove(IN HANDLE pHandle,
DWORD axisn,
DWORD target,
DWORD low_speed,
DWORD high_speed,
DWORD accel_time,
DWORD decel_time);
BOOL PERFORMAXCOM_API _stdcall fnPerformaxComStop(IN HANDLE pHandle,
DWORD axisn,
DWORD ramp_stop);

#ifdef __cplusplus
}
#endif


Подробнее здесь: https://stackoverflow.com/questions/244 ... sb-using-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»