我正在为我公司建立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 – 从网站与现金抽屉沟通的更多相关文章

  1. iOS上的C#库

    我已经完成了droid开发,答案就是创建一些使用我的C#库的Web服务,然后让droid使用这些服务.我假设同样的方法适用于iOS(正确的???

  2. Swift 2.0协议扩展和Java / C#抽象类之间有区别吗?

    通过在Swift2.0中添加协议扩展,似乎协议基本上成为Java/C#抽象类.我唯一可以看到的不同之处在于抽象类限制为单一继承,而Swift类型可以符合任何数量的协议.这是对Swift2.0中的协议的正确理解,还是有其他差异?有几个重要的区别…

  3. Swift有一个隐式的Object Initializer,就像在C#中一样吗?

    在C#中,我们有对象初始化器,像这样:Swift有这个吗?例如,我有这个代码:但是想做以下一些事情:谢谢!

  4. Android的C#版本的Console.WriteLine?

    在Android中,写入控制台的最佳方式是什么.在C#中,我使用Log4Net或只使用Console.Write解决方法查看Android.Util.Log的帮助页面.您可以使用:

  5. Android上的C#:Xamarin或Unity?

    还是有其他解决方案?

  6. jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】

    这篇文章主要介绍了jQuery+C#实现参数RSA加密传输功能,结合具体实例形式分析了js使用jsencrypt.js插件前端字符数据处理传输及C#后台数据转换与RSA加密相关操作技巧,并附带jsencrypt.js供读者下载参考使用,需要的朋友可以参考下

  7. 一文简单了解C# 中的DataSet类

    这篇文章主要介绍了一文简单了解C# 中的DataSet类,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  8. C#中对象与JSON字符串互相转换的三种方式

    这篇文章介绍了C#中对象与JSON字符串互相转换的三种方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. 如何用nodejs给C#写一个数据表的实体类生成工具

    这篇文章主要介绍了如何用nodejs给C#写一个数据表的实体类生成工具,对nodejs感兴趣的同学,可以参考下

  10. C#中使用迭代器处理等待任务

    这篇文章主要介绍了C#中使用迭代器处理等待任务,迭代器是C#的重要特性,文中用迭代器进行了异步编程的相关实践,需要的朋友可以参考下

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部