ВВЕДЕНИЕ
Я перечитываю себя 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
Использование DLL производителя для управления шаговым контроллером через USB с помощью C ++ ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение