CR-4005
http://www.thebarcodewarehouse.co.uk/epos-systems/cash-drawers/cr-4005-b/
供应商包括可在这里找到的司机
http://www.posiflexusa.com/driver.php
这允许您使用dll文件打开抽屉等.给出的代码的例子如下所示:
Public Declare Function OpenUSB Lib "usbcr.dll" () As Long
我对C有很少的经验,但是用谷歌我肯定可以弄清楚这部分.
我遇到的问题是,该解决方案只是一个托管在场外的网站,我需要做的就是从站点问题命令到使用它的客户端机器.所以当他们完成销售时,我可以打开那台特定机器的抽屉.
我需要澄清的是我如何去做这件事.例如,我假设我在客户端机器上安装驱动程序,然后插上钱箱,然后当他们访问该站点时,我需要执行上面显示的C命令来打开抽屉.我遇到的问题是围绕着这个问题如何工作.当然,如果我在服务器上执行命令,它将有效地查看服务器的usb端口,并试图打开抽屉.而不是向客户机发出命令.因此,为了解决这个问题,可能有可能在客户端机器上的c文件,然后我只是使用类似的方式在站点上调用文件
C:\Windows\execute.bat
我知道我没有很多信息提供,因为我正在尝试解决这个问题,然后再进行购买,我可能会复杂化,但任何指针或信息将是最受赞赏的.此外,我还没有完全设置这个模型,所以如果你知道一个很好的文档或现有的解决方案的替代方案,我也可以这样做.
笔记
我可以安装xampp并创建一个简单的PHP文件,调用一个执行必要工作的exe.因此,可能访问客户机上的本地地址可能是另一个潜在的想法(即127.0.0.1/open.PHP).
更新
我的网站包括POS端的东西已经建成并准备好了.这是使用PHP构建的,并且托管在外部服务器上.我们通过域访问该网站.
当用户在外部站点上执行特定操作时,需要通过打开本地文件(即可以打开抽屉的exe)或访问本机上的本地Web服务器(即localhost)打开本地员工. /打开.
直到抽屉是上面列出的,它通过USB连接到客户端机器.不使用收据打印机.
>你做了一个网络应用程序,这是一个POS(大概在PHP中)
>您的用户通过本地服务器上的Web浏览器访问POS
>您需要能够开立现金抽屉客户端…(例如,更改回客户)
选项1:
考虑到:
>您可以控制客户POS客户端(如您可以安装软件和设置策略)
>您可以安装Google Chrome,并将其设置为您的应用程序的要求
然后,您可以尝试使用本机chrome USB库:
http://developer.chrome.com/apps/app_usb
它是has it’s caveats,是的,但是你可能会有运气,并且可以打开设备.我已经为一家POS软件公司工作了几年,而串行和usb现金抽屉都有一个非常简单的协议,即使使用FoxPro也可以打开它们.
您必须创建一个小型的Chrome应用程序,发送命令打开抽屉.这个应用程序应该暴露一个函数,一旦你写操作或提交事务到服务器可以调用(例如当你保存销售记录时),所以你可以附加一个回调在jQuery o javascript,这样做后,你发布数据并获得成功的响应.
选项二:
Java小程序:
我没有经验.但是您可以使用JNI(java本机接口)调用本机代码.我不知道小程序容器是否以不允许您执行的方式进行沙盒化,但是这两个链接可能会派上用场:
How To Call Native (DLL) Code From Java Using JNI
Calling C library routines from java
选项3:
操作方式:
另一个选项,似乎对我来说最简单,就是在操作系统级映射一个按键,以便组合执行某些命令.您可以在here中看到如何在Windows中执行此操作的说明.在linux(gnome和kde等)这很容易.
一旦你这样做了,你可以使用this jQuery library,“模拟”按键,所以再次,当你收到你的回应,交易完成,你需要打开现金抽屉,你将要回调执行一个函数您根据我给你的文章预先配置的模拟按键.
当然,这个命令会运行一个本地的本地应用程序,它实际上打开了抽屉,可以在C/C++ / C#或任何支持的设备API中.但我确定是一个标准的界面,所以你可以用任何语言轻松地编写该应用程序. Here’s一个很好的开始为C#.
选项4:
本地Web服务器.
现在你提到有一个本地的Web服务器这实际上可以是一个选项.但是,为什么在客户机上安装XAMPP?有一个更好的方法来做到这一点.答案是在C#/ .NET中编写一个非常简单的HTTP Web服务器.所以按照这种方法,你会想:
>在C#/.中编写一个HTTP服务器.Net侦听一个特定的端口(here’s a guide,它只有50行代码)
>在您的C#代码中,您将要使用随硬件P/Invoke to the C library(我不推荐)的任何集成API,也可以简单地使用发送到USB port commands的方法.因此,打开抽屉,打印或执行任何您需要的内部操作系统集成在C#中将会更简单. (即使是用于单声道的linux / mac)
>在C#中设置你的代码,使服务器只听本地地址,所以没有人可以打开,除非是相同的网络,我只允许127.0.0.1只是为了确保只有本地机器可以打开它.
>将这个编译的exe放在windows自动启动器上,这样每当计算机启动打开直到启动的迷你Web服务器.
>只要一个事务成功完成POS服务器,就可以抓住你的回调,最后做一些事情:
$.ajax({ type: 'POST',dataType: 'json',data: 1,url: '127.0.0.1:8088/open',error: function() { alert('Could not open cash drawer'); },success: function() { //do something else } });
所以你会发送一个POST请求到本机,它监听8088端口的HTTP协议(或者您在代码中设置的任何内容),然后在内部处理打开抽屉的请求,如果你抛出该代码中的异常比您可以从此C#迷你网络服务器返回HTTP 500响应,以便捕获jquery(或您使用的任何库)的错误处理程序,
而且我强烈推荐,就像我告诉过你一样,这个应用程序只是为了安全起见听着本地的请求,即使你只是做一个简单的操作.它将工作,因为客户端jquery代码正在被本地机器调用.
您还可以优化网络服务器应用程序,以便它读取.ini文件或某些设置文件(.Net具有.config默认值,这是要走的路),以便您可以根据每个客户端进行调整,并且不进行硬编码选项.
祝你好运!让我们知道你是怎么做到的