我目前正在为我的公司建立一个POS解决方案.最难的部分是购买现金抽屉,因为我没有太多的经验,他们更喜欢USB现金抽屉.我找到了一个我感兴趣的模型
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
Run Code Online (Sandbox Code Playgroud)
我对C有一点经验但是谷歌我确信我可以把这一部分搞清楚.
我遇到的问题是该解决方案实际上是一个非现场托管的网站,我需要做的是从网站发布命令到使用它的客户端机器.因此,当他们完成销售时,我可以打开该特定机器的抽屉.
我需要澄清的是我是如何做到这一点的.例如,我假设我在客户端计算机上安装驱动程序并插入现金抽屉.然后,当他们访问该站点时,我需要执行上面显示的C命令来打开抽屉.我遇到的问题是如何解决这个问题.当然,如果我在服务器上执行命令,它将有效地查看服务器USB端口并尝试打开抽屉.而不是将命令发送到客户端机器.因此,为了解决这个问题,有可能在客户端机器上有c文件然后我只是使用类似的东西调用网站上的文件
C:\Windows\execute.bat
Run Code Online (Sandbox Code Playgroud)
它反过来调用客户端计算机上的c文件.
我知道我没有提供很多信息,因为我想在进行购买之前弄清楚这一点,我可能过于复杂,但任何指针或信息都会非常感激.此外,我还没有完全按照这个模型设置,所以如果您知道一些有良好文档或现有解决方案的替代方案,我也对此持开放态度.
笔记
我知道有一个可能的解决方案,使用chrome api调用
我可能会安装xampp并创建一个简单的php文件,调用exe来完成必要的工作.因此,访问客户端计算机上的本地地址可能是另一个潜在的想法(即127.0.0.1/open.php).
更新
我的网站包括POS方面的东西已经建成并准备好了.这是使用PHP构建的,并托管在外部服务器上.我们通过域名访问该网站.
当用户在外部站点上执行特定操作时,需要通过打开本地文件(即可以打开抽屉的exe)或通过访问机器上的本地Web服务器(即localhost)来打开本地工作人员直到抽屉. /打开.
直通抽屉是上面列出的抽屉,它通过USB连接到客户机器.没有使用收据打印机.
Gus*_*bio 24
让我说清楚:
选项1:
考虑到:
然后你可以尝试使用原生的chrome USB库:
http://developer.chrome.com/apps/app_usb
它有它的警告,是的,但你可能有运气,并且设备可以打开它.我已经为POS软件公司工作了几年,串口和USB现金抽屉都有一个非常简单的协议,即使使用FoxPro也可以打开它们.
您必须创建一个小型Chrome应用程序,它发送命令以打开抽屉.这个应用程序应该公开一个函数,可以在您编写操作或将事务提交到服务器时调用(例如,当您保存销售记录时),这样您就可以在jQuery或javascript中附加回调,这样做会在您发布后执行此操作数据并获得成功的响应.
选项2:
Java小程序:
我没有这方面的经验.但是您可以使用JNI(java本机接口)来调用本机代码.我不确定applet容器是否以不允许你这样做的方式进行沙盒化,但是这两个链接可能会派上用场:
如何使用JNI从Java调用本机(DLL)代码从java 调用C库例程
选项3:
以操作方式执行操作:
另一种选择,对我来说似乎是最简单的选择,是在OS级别映射击键,以便组合执行某些命令.您可以在这里看到如何在Windows中执行此操作的说明.在linux(gnome和kde等)中,这很容易.
一旦你这样做了,你就可以使用这个 "模拟"击键的jQuery库,所以,当你收到交易完成的回复并且你需要打开现金抽屉时,你会想要回调一个函数,执行你根据我给你的文章预先配置的模拟击键.
当然,这个命令将运行一个本地本机应用程序,实际打开抽屉,可以是C/C++/C#或任何支持的设备API.但我确信它是一个标准界面,因此您可以使用任何语言轻松编写该应用程序.这是 C#的良好开端.
选项4:
本地Web服务器.
现在您提到了一个本地Web服务器,实际上这可能是一个选项.但是,为什么要在客户端计算机上安装XAMPP?有一种更好的方法.答案是在C#/ .NET中编写一个非常小而简单的HTTP 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
}
});
Run Code Online (Sandbox Code Playgroud)因此,您将向本地计算机发送POST请求,该请求将侦听8088端口中的HTTP协议(或您在代码中设置的任何内容),然后它将在内部处理请求,如打开抽屉,如果您抛出该代码中的异常比您可以从此C#迷你网络服务器返回HTTP 500响应,以便您在jquery(或您使用的任何库)的错误处理程序上捕获它
我强烈建议,就像我告诉你的那样,这个应用程序只是出于安全原因才听取本地请求,即使你只是做一个简单的操作.它的工作原理是因为本地机器正在调用客户端jquery代码.
您还可以优化Web服务器应用程序,以便它读取.ini文件或某些设置文件(.Net具有.config默认值,这是可行的方式),以便您可以根据每个客户进行调整而不进行硬编码选项.
祝好运!让我们知道你是怎么做到的
归档时间: |
|
查看次数: |
16175 次 |
最近记录: |