技术文章及资料中心

ARTICLE

文章中心

产品

应用

其他

安装使用 您的位置:首页--文章中心--空间光调制器(SLM)

LCOS-SLM的SDK的使用-基于USB的连接


为了方便客户同时对多台SLM进行控制,滨松也提供了基于USB连接的SLM的控制SDK(下载链接:https://pan.baidu.com/s/1Zjz7QWysJtHziEopcZw7Eg 提取码:SLMU )。 使用本SDK,客户可以获得每台连接SLM的SN码,从而可以使用SN码作为索引,对不同的SLM单独进行控制。


本SDK提供的函数功能汇总如下:



SDK内部包含了总共8个文件夹。



其中,hpkSLMdaLV_cedcl-32bit是供基于32位LabVIEW二次开发使用的。
hpkSLMdaLV_cedcl-64bit是供基于64位LabVIEW二次开发使用的。
hpkSLMdaLV_stdcall_32bit是供基于32位的C++/VBA二次开发使用的。
hpkSLMdaLV_stdcall_32bit是供基于64位的C++/VBA二次开发使用的。
而C++_sample_code_USBControl是提供的基于C++编写的示例程序。
LabVIEW_sample_code_USBControl是提供的基于LabVIEW的示例程序。
VBA_sample_code_USBControl是提供的基于excel中VBA编写的示例程序。
cintools是LabVIEW提供的开发中所依赖的头文件等。



下面以开发64bit的C++程序为例,展示如何使用本SDK。下面案例使用的IDE是visual studio2022。具体流程也可以参考底部的视频。


1.打开visual studio选择创建新建项目;



2. 选择C++下的空项目;



3.右键项目,选择"在文件资源管理器中打开文件夹",打开项目所在文件夹。



4. 将SDK中hpkSLMdaLV_stdcall_64bit文件夹内的文件都拷贝到项目所在文件夹;



5.将SDK中的cintools文件夹也拷贝到项目所在文件夹;



6.在解决方案资源管理器下的"源文件"点击右键,选择添加-新建项,选择C++文件(.CPP)。然后"头文件"点击右键,选择添加现有文件,选择项目文件夹中的hpkSLMdaLV.h。



7.然后解决方案资源管理器下"资源文件"文件夹点击右键,然后将SDK文件夹的两个dll文件也添加进去。



8.最后在项目上点击右键,选择属性;



9.然后选择C++- 常规--附加包含目录,选择cintools文件夹,然后点击应用。



10.然后继续右键项目,选择属性-高级-字符集,设置为未设置。




11.然后在cpp文件中输入语句就可以了。下面展示如何在程序中导入dll,并且使用其中的Open_Dev函数打开SLM,返回SLM的bID值。


/*头文件的引入*/
#include //为了后面使用cout cin
#include //为了基于win32api调用dll函数 (使用LoadLibrary导入dll
) #include "hpkSLMdaLV.h" //include dll对应的头文件
#include "stdint.h" //为了使用uint8_t等
using namespace std;


int main()
{


/*使用loadlibrary完成dll函数的加载。*/
HMODULE hMod = LoadLibrary("hpkSLMdaLV.dll");
if (hMod == NULL)
{
cout<<"加载DLLTest1.dll动态库失败"< }
if (hMod != NULL)
{ cout << "加载DLLTest1.dll动态库成功" << endl;
}
cout << "导入dll函数完成" <


/*
Open_Dev函数相关:打开SLM
devSize:返回值,是返回有多少个SLM连接成功
bIDSize:输入值,输入有多少个SLM连接
bIDList:返回每个SLM的bID值,比如只有一个的话bID是返回类似于6XXXXXXXXX,说明这台SLMbid是6.而如果有两个的SLM的话,就是67XXXXXXXX,说明两台SLM的bid分别是6和7;
*/
int32_t devSize = 0;
int32_t bIDSize = 1;
uint8_t* bIDList;
bIDList = new uint8_t[10];
typedef int32_t(*Open_Dev_Func)(uint8_t*, int32_t); // 定义函数指针类型
Open_Dev_Func Open_Dev; //定义函数 这里函数名字Open_Dev改成别的名字也可以。
Open_Dev = (Open_Dev_Func)GetProcAddress(hMod, "Open_Dev"); // GetProcAddress返回指向的函数名的函数地址,后期就可以调用了 后面"Open_Dev"就是dll中内部的函数名字。
devSize = Open_Dev(bIDList, bIDSize);
cout << "SLM连接的台数"< //输出bid值
for (int i = 0; i < 10; i++)
{
cout <<(int)(*(bIDList+i)) << endl;
}


/*在完成调用功能后,不在需要DLL支持,则可以通过FreeLibrary函数释放DLL。*/
FreeLibrary(hMod);
return 0; }


SDK内的其它函数都可以参考函数说明文档和示例程序进行编写。


以上展示的是基于C++进行SDK的调用,我们也同时提供了基于EXCEL内VBA的实例程序,还有LabVIEW的示例程序。 此外客户也可以根据实际需求,使用C或者C#对本SDK进行调用。


若视频不能切换高清,可点击此处跳转观看


相关工程师

针对以上内容,如您有任何问题,欢迎联系我们


上一个:空间光调制器LCOS-SLM装机手册(中文说明书)--适用型号 X15223系列

下一个: 滨松空间光调制器LCOS-SLM算法方案:如何自由摆布光束分布

×
回到顶部