Samlight二次开发

版权声明:一辈子做程序员有何不可? https://blog.csdn.net/yoyo18520/article/details/53406643

很久没有在CSDN上写点东西了,一方面是感觉自己实力不咋地,代码搬运工,写出来怕出丑,不过更多的原因是自己懒得写。现在想写点自己擅长的,想了好久才觉得原来这个可以写写,也算是总结下自己所会的吧。
本文从下面几个方面来介绍如何在Samlight上做简单的二次开发:


Samlight简介

Samlight软件是什么?我想已经不需要我来再做过多的介绍了,以我浅显的理解是:德国Scaps的激光控制软件,和Samlight打标卡配套的软件,主要作用是连接Samlight打标卡,软件控制打标卡,打标卡控制激光器出光,打标,完成基本的激光打标功能。

Scaps官网是:http://www.scaps.com
中国Samlight卡代理方北京海目:http://www.hmlaser.com
北京海目提供的二次开发文档:http://www.hmlaser.com/cn/index.php/archives/tag/samlight_development
好多都是蛮实用蛮高效的例子,棒棒的,看过才知道没想到Samlight还可以这么玩。


Samlight帮助文档

拿到开发软件不看说明文档真的好吗?

不看说明文档,直接在百度上搜碰运气,这样的事情我没少做过,总觉得现在互联网都这么方便了,什么东西搜不到。可在搜了无数次之后才发现,自己想要用的东西怎么都搜不到。也罢,最终还是投入了官方文档的怀抱。

Samlight软件的开发文档还是很给力的,比起一些国内的设备提供的开发接口纰漏不全还算是很良心的,只不过是英文文档,大家啃一啃还是很有嚼头的。


查看Samlight帮助文档
Samlight->Help->Contents
帮助->内容
在左侧树形结构下面找到External Control->Client Control Interface然后就是我们需要的接口说明文档
文档入口
有了这个,大家就可以直接去耍了。

如果大家仔细看文档的话会发现,Samlight提供两种调用方式,一种是ActiveX控件的方式,另一种是TCP/IP的方式。根据大家的需要自己去选择使用。而文档中已经给出了哪些函数是ActiveX的方式可以调,哪些是TCP/IP可以调用的。Samlight大多数函数成功就是返回1,失败返回0。

Function:是指ActiveX调用时的函数名。
ASCII:是指TCP/IP调用时需要发送的字符串。
而下面的一段英文是该函数的功能解释,仔细读读还是可以知道这个函数是干什么用的。

这里写图片描述


ActiveX调用方式
安装了Samlight之后,会默认安装ActiveX控件,只需要导入到工程就可以了,通过ActiveX来调用即可,下面一步一步开发会介绍如何使用。

TCP/IP方式调用
原理就是Samlight软件端做服务器,我们当做客户端来连接,之后发字符串命令,接受返回值即可。初始化的时候给服务器端发送"SAM CCI Plain\n"然后就可以正常通讯了。TCP/IP方式需要自己来写函数,需要花时间,不过写好了就比较方便了。Samlight提供了一个字符串头文件,可以引用,用的时候当做字符串格式化赋相应的值就可以了,还是比较方便的。
ScCciCommands.h
如果用这种方式,需要在菜单Samlight->Setting[设置]->System[系统]->Remote[远程]选项卡中选择TCP选项,然后设置本机IP和端口就可以了。
TCP/IP设置


常用的函数说明

ScChangeTextByName
原型:long ScChangeTextByName(BSTR EntityName, BSTR Text)
解释:根据实体名EntityName修改其内容为Text,如果有多个同名实体,则全部修改。但好像只有两种种类型的实体可以修改内容,ScBarCode12Chars2DScWinTextChars2D类型的,即条码类型和文字类型的。
这里写图片描述

ScMarkEntityByName
原型:long ScMarkEntityByName(BSTR EntityName, long WaitForMarkEnd)
解释:打标函数。根据实体名EntityName来打标,EntityName为空时表示整个图档全部打标,WaitForMarkEnd表示是阻塞还是非阻塞,为1时表示等到打标完成后返回,为0时表示执行打标后马上返回,不管打标是否完成。

ScLoadJob
原型:long ScLoadJob(BSTR FileName, long LoadEntities, long OverwriteEntities, long LoadMaterials)
解释:导入Samlight图档FileName(sjf文件),后面三个参数的一般都是1。如果不想覆盖当前图档,可以将OverwriteEntities传0。

ScSetMarkFlags
原型:long ScSetMarkFlags(long Flags)
解释:这个函数功能需要配合ScMarkEntityByName使用,一般去掉Samlight打标时Output框,就要把Flags赋值为4,然后调用ScMarkEntityByName就没有讨厌的Output框了。其他的几个功能可以看文档了解下。

ScGetLongValue
原型:long ScGetLongValue(long Type)
解释:根据对于的Type值可以获取相应的Samlight软件信息,如常用的Samlight卡信号就是用这个函数获取的。Type为4的时候,就可以获取Samlight卡输入端的信号了。而返回的信号,需要自己解析。


一步一步来开发

我用的是VS2008,其实不管什么工具都一样,只需要导入ActiveX控件,然后通过该控件就可以操作Samlight软件了。

一、新建MFC工程,创建简单的MFC对话框程序(这很简单,就不上图了)。
二、在资源窗口空白处右击,选择Insert ActiveX Control[插入ActiveX控件]
插入ActiveX控件
在弹出的Insert ActiveX Control对话框中找到SCAPS.ScSamlightClientCtrl,选中后确认OK。电脑上安装了Samlight软件都可以找到这个控件的。
插入
三、对着窗口里多出来的ActiveX控件右键选择Add Variable,在弹出的对话中给控件绑定变量就可以了。
这里写图片描述
这里写图片描述
四、工程中自动添加了scsamlightclientctrl1.hscsamlightclientctrl1.cpp两个文件,我们就可以通过m_SamCtrl变量来操作Samlight软件了。
五、如果你什么都不想设置的话,建议你在Samlight->Setting[设置]->System[系统]->Remote[远程]选项卡中选择功能调入的模式,直接用m_SamCtrl调用函数就可以了。

官方调用接口VC6.0的例子,可以参考参考

感谢你的耐心读到这里,哈哈。有机会大家一起讨论学习学习。


猜你喜欢

转载自blog.csdn.net/yoyo18520/article/details/53406643