Php 通过网站与现金出纳沟通
我目前正在为我的公司构建POS解决方案。最难的部分是购物的现金抽屉,因为我没有太多的经验与他们,并希望一个USB现金抽屉。我找到了一个我感兴趣的模型 CR-4005 供应商包括一个驱动程序,可在此处找到 这允许您使用dll文件打开抽屉等。给出的代码示例如下所示:Php 通过网站与现金出纳沟通,php,c,Php,C,我目前正在为我的公司构建POS解决方案。最难的部分是购物的现金抽屉,因为我没有太多的经验与他们,并希望一个USB现金抽屉。我找到了一个我感兴趣的模型 CR-4005 供应商包括一个驱动程序,可在此处找到 这允许您使用dll文件打开抽屉等。给出的代码示例如下所示: Public Declare Function OpenUSB Lib "usbcr.dll" () As Long 我在C语言方面有一些经验,但在谷歌方面,我相信我能理解这一部分 我遇到的问题是,该解决方案实际上只是一个网站托管
Public Declare Function OpenUSB Lib "usbcr.dll" () As Long
我在C语言方面有一些经验,但在谷歌方面,我相信我能理解这一部分
我遇到的问题是,该解决方案实际上只是一个网站托管在异地,我需要能够做的是从站点向使用它的客户机发出命令。这样,当他们完成销售时,我就可以打开那台机器的抽屉
我需要澄清的是我是如何做这件事的。例如,我假设我在客户机上安装了驱动程序,并插入了现金抽屉。然后当他们访问站点时,我需要执行上面显示的C命令来打开抽屉。我遇到的问题是,我的脑子里总是想着这是怎么回事。当然,如果我在服务器上执行该命令,它将有效地查看服务器的usb端口并尝试打开抽屉。而不是向客户机发出命令。因此,为了解决这个问题,有可能在客户机上安装c文件,然后我只需在站点上使用
C:\Windows\execute.bat
然后调用客户机上的c文件
我知道我没有太多的信息可以提供,因为我正在尝试在继续购买之前弄清楚这一点,我可能过于复杂了,但任何提示或信息都将不胜感激。此外,我还没有完全建立在这个模型上,因此,如果您知道一个具有一些好的文档或现有解决方案的替代方案,我也愿意这样做
注释
我知道ChromeAPI调用可能会有一个解决方案
我可能会安装xampp并创建一个简单的php文件来调用执行必要工作的exe。因此,在客户机上访问本地地址可能是另一个可能的想法(即127.0.0.1/open.php)
更新
我的网站,包括POS端的东西是建立和准备去。这是使用PHP构建的,托管在外部服务器上。我们通过域访问该站点
当用户在外部站点上执行特定操作时,需要通过打开本地文件(即可以打开抽屉的exe)或访问机器上的本地Web服务器(例如本地主机/open)来打开职员本地抽屉
收银机抽屉是上面列出的,它通过USB连接到客户机。没有使用收据打印机。不是真正的答案,但太长,无法发表评论 在我看来,您似乎希望从浏览器调用本机代码。这不会让很多人满意,尽管我知道实现这一点的确切方法。它包括Internet Explorer和COM服务器(activeX)。IE可以创建activeX程序的实例,您需要编写该实例 然后,此activeX可以向供应商提供的DLL发出命令。但问题是,如果我坐在其中一个终端上,有一个键盘,我也可以打开抽屉。您还需要一种从服务器向客户端传达打开抽屉意图的方法。我想您可以使用WebSocket来维护客户机和服务器之间的通信通道,通过该通道可以发出打开抽屉的意图 在锁定的情况下,这可能没什么问题,尽管我在这里没有考虑也没有提到各种安全问题 总而言之,这里有一个可能的解决方案:
//
// jsExcelObj.js
// 28/08/2012
// the (only Excel) app instance - we only want to have 1
// **** don't access this variable directly ****
var jsExcelApp = null;
/*****************************************************************************
Excel class
*****************************************************************************/
function startExcel()
{
jsExcelApp = new ActiveXObject("Excel.Application");
}
function stopExcel()
{
jsExcelApp.Quit();
delete(jsExcelApp);
jsExcelApp = null;
}
function jsExcelWorkbook(filename)
{
if (jsExcelApp == null)
startExcel(); //jsExcelApp = new ActiveXObject("Excel.Application");
this.mFilename = filename;
this.mExcelSheet = null;
this.mWorkbook = jsExcelApp.Workbooks.Open(filename);
this.close = function()
{
this.mWorkbook.Close(false);
this.mFilename = null;
this.mExcelSheet = null;
this.mWorkbook = null;
}
this.open = function(filename)
{
if (jsExcelApp == null)
startExcel();
if (this.mFilename != null)
this.close();
this.mFilename = filename;
this.mExcelSheet = null;
this.mWorkbook = jsExcelApp.Workbooks.Open(filename);
}
this.setSheet = function(sheetName)
{
this.mExcelSheet = this.mWorkbook.Worksheets(sheetName);
}
this.getCellValue = function(column, row)
{
return this.mExcelSheet.Cells(row, column).value;
}
// returns the cells background colour as a html hex color value - e.g "7a554a"
this.getCellColor = function(column, row)
{
var hexStrVel, r, g, b, decNum;
decNum = this.mExcelSheet.Cells(row, column).Interior.Color;
// get a hexidecimal string representation of the number
hexStrVal = decNum.toString(16);
// pad to 6 bytes long
while (hexStrVal.length < 6)
{
hexStrVal = "0" + hexStrVal;
}
// extract the 3 components
r = hexStrVal.substr(4,2);
g = hexStrVal.substr(2,2);
b = hexStrVal.substr(0,2);
return r+g+b; // return them in reverse order
}
}
//
//jsExcelObj.js
// 28/08/2012
//(仅Excel)应用程序实例-我们只希望有1个
//****不要直接访问此变量****
var jsExcelApp=null;
/*****************************************************************************
Excel类
*****************************************************************************/
函数startExcel()
{
jsExcelApp=新的ActiveXObject(“Excel.Application”);
}
函数stopExcel()
{
jsExcelApp.Quit();
删除(jsExcelApp);
jsExcelApp=null;
}
函数jsExcelWorkbook(文件名)
{
如果(jsExcelApp==null)
startExcel();//jsExcelApp=newActivexObject(“Excel.Application”);
this.mFilename=文件名;
this.mExcelSheet=null;
this.mWorkbook=jsExcelApp.Workbooks.Open(文件名);
this.close=函数()
{
此.mWorkbook.Close(false);
this.mFilename=null;
this.mExcelSheet=null;
this.mWorkbook=null;
}
this.open=函数(文件名)
{
如果(jsExcelApp==null)
startExcel();
if(this.mFilename!=null)
这个。关闭();
this.mFilename=文件名;
this.mExcelSheet=null;
this.mWorkbook=jsEx
<script src='script/jsExcelObj.js'></script>
<script>
var fullyQualifiedPathToExcelWorkbook = "C:/someFile.xls";
var mExcel = new jsExcelWorkbook(fullyQualifiedPathToExcelWorkbook);
mExcel.setSheet("Sheet1");
var col1Row1 = mExcel.getCellValue(1, 1);
alert(col1Row1);
mExcel.close();
stopExcel();
</script>
$.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
}
});
<?php
$texttoprint = $_POST['printthis'];
$texttoprint = stripslashes($texttoprint);
$fp = fsockopen("192.168.10.30", 9100, $errno, $errstr, 10);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "\033\100");
$out = $texttoprint . "\r\n";
fwrite($fp, $out);
fwrite($fp, "\012\012\012\012\012\012\012\012\012\033\151\010\004\001");
fclose($fp);
}
?>