ActiveX(ocx) + DLL(wosa) + JS:实现BS硬件调用框架(一)

第一篇技术类型博客,难免用词抑或技术细节存在的错漏。

项目整体采用flex作为前端显示,spring作为逻辑层,js调用ActiveX完成硬件操作。
至于数据库远程服务器负载均衡等核心技术,暂时不提。工作重点当然放在对硬件的封装:

首先理清关于底层的结构形成的结构是,dll作为sp封装底层设备类,正如我们所知,大部分设备采用串口与计算机通信,通过封装厂商指令,可以最底层的了解设备性能。但由于指令集复杂而且需要更多的时间。当然厂商通过封装指令集而产生API是最常用的。设备底层dll通常包含异步机制(即队列保存,线程遍寻)。

API层
ActiveX: cab 或者 ocx,
   classid:作为web调用的唯一标识。返回值参数基本采用LONG和BSTR(字符类型是驱动开发过程为了满足各种语言调用时的一个重要设计条件,后面文章将仔细探讨)。

 1 long COCXTEST_OCXCtrl::OpenComm() 
 2 {
 3     // TODO: Add your dispatch handler code here
 4     CString strPath;// = GetFilePath();
 5     strPath = "C:\\XFS\\OCXTEST\\OCXTEST_DLL.dll";
 6     hDll = LoadLibrary(strPath);
 7     PrintLog(strPath);
 8     lpOpenCom lpOpen;
 9     if(hDll == NULL)
10     {
11         PrintLog("can't load the standard libaray");
12         return 101;    //动态库为空
13     }
14     else
15     {
16         lpOpen = (lpOpenCom)GetProcAddress(hDll,"Open");
17     }
18     if(lpOpen == NULL)
19     {
20         return 102;    //函数为空
21     }
22     if(0==lpOpen())
23     {
24         return 0;
25     }
26     return 1;
27 }

其中采用隐式调用的dll就是下面spi层的结果。

SPI层
Dll: lower layer层相对ocx更底层,主要封装基于Cen/xfs,或者范wosa规范的硬件(标准wosa规范下的代码将在后续文章中标注)
      版本号,在vc工程中insert—>resources->versions作为驱动的唯一标识需要详细标识。
      调用路径:这是dll,multi——layer常见的,显示loadlibaray
      先使用最简单的结构源代码,以展示上述问题。

extern "C" OCXTEST_DLL_API int Open(void)
{
    return 0;
}
// This is the constructor of a class that has been exported.
// see OCXTEST_DLL.h for the class definition
COCXTEST_DLL::COCXTEST_DLL()
{ 
    return; 
}

Web层

javascript直接调用,关于响应事件及特殊参数的调用后续。

<body> 
   <OBJECT
ID="ocx" CLASSID="CLSID:441FEC3E-02DD-4AEE-9A2C-5DCBE7CC788F" width='370' height='200'
codebase='OCXTEST_OCX.ocx'>  
</OBJECT>

<script language="javascript">
Play();
function Play()
{
  var gg=document.getElementById("ocx");
  var a=gg.OpenComm();
  var retval;
    alert(a);
    //alert(retval);
    gg.Excute(1);
} 
function ExcuteJS()
{
    var obj = document.getElementById("ocx");
    obj.Excute(1);    
}
</script>

下篇将对API层进行稍微深入的封装并针对ActiveX中BSTR展开探讨字符类型。

转载于:https://www.cnblogs.com/beeshow00/archive/2012/07/10/2585108.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值