php – 从网站与现金抽屉沟通

前端之家收集整理的这篇文章主要介绍了php – 从网站与现金抽屉沟通前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为我公司建立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

我对C有很少的经验,但是用谷歌我肯定可以弄清楚这部分.

我遇到的问题是,该解决方案只是一个托管在场外的网站,我需要做的就是从站点问题命令到使用它的客户端机器.所以当他们完成销售时,我可以打开那台特定机器的抽屉.

我需要澄清的是我如何去做这件事.例如,我假设我在客户端机器上安装驱动程序,然后插上钱箱,然后当他们访问该站点时,我需要执行上面显示的C命令来打开抽屉.我遇到的问题是围绕着这个问题如何工作.当然,如果我在服务器上执行命令,它将有效地查看服务器的usb端口,并试图打开抽屉.而不是向客户机发出命令.因此,为了解决这个问题,可能有可能在客户端机器上的c文件,然后我只是使用类似的方式在站点调用文件

C:\Windows\execute.bat

这又调用客户机上的c文件.

我知道我没有很多信息提供,因为我正在尝试解决这个问题,然后再进行购买,我可能会复杂化,但任何指针或信息将是最受赞赏的.此外,我还没有完全设置这个模型,所以如果你知道一个很好的文档或现有的解决方案的替代方案,我也可以这样做.

笔记

我知道可能会有一个可能的解决方案与chrome api调用

我可以安装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默认值,这是要走的路),以便您可以根据每个客户端进行调整,并且不进行硬编码选项.

祝你好运!让我们知道你是怎么做到的

猜你在找的PHP相关文章