0

下面的 VB 脚本可以用 Javascript 来打开 IP 钱箱吗?

Private Sub CashDrawerConnect_Click()
  Winsock1.Close
  ipaddr = "192.168.2.5"
  Winsock1.RemoteHost = ipaddr
  Winsock1.RemotePort = 30998
  Winsock1.Connect
  Sleep 250
  TxtOpStatus = "Connection to the cash drawer at " & ipaddr & " is established..."
  TxtOpStatus.Refresh
End Sub
Private Sub CashDrawerOpen_Click()
  If Winsock1.State = sckConnected Then
    Winsock1.SendData "opendrawer\0a"
  Else
    TxtOpStatus = "Not connected to the device"
    TxtOpStatus.Refresh
  End If
End Sub
4

2 回答 2

1

您可以在 javascript 上执行此操作,但不能在浏览器上运行时执行此操作。

您需要安装nodejs并直接从控制台运行您的 js 文件。

这是一个小示例,可以连接您的抽屉并在您的示例中发送“opendrawer”命令:

var net = require('net');
var client = net.connect({port: 30998, host: "yourip"}, function() { 
    client.write("opendrawer\0a");
});

但是,如果服务器可以访问抽屉,则 javascript 代码可以向服务器发出请求,服务器将负责打开与抽屉的连接并发送有效负载 (opendrawer)。

如果您使用 php,您可以查看sockets 文档

于 2013-03-16T00:55:40.847 回答
0

使用 VB 和 JavaScript 的调用大部分是相同的,您只需要使其适应该语言。http://www.ostrosoft.com/oswinsck/oswinsck_javascript.asp

以下是使用 JScript 中的 WinSock 的片段

var oWinsock;
var sServer = "192.168.2.5";
var nPort = 3098;
var bClose = false; 

oWinsock = new ActiveXObject("OSWINSCK.Winsock");
// Hooking up handlers
WScript.ConnectObject(oWinsock, "oWinsock_");
oWinsock.Connect(sServer, nPort);
WScript.Echo("Invalid URL");
bClose = true;

function oWinsock_OnConnect() {
  oWinsock.SendData('Your data');
}

function oWinsock_OnDataArrival(bytesTotal) {
  var sBuffer = oWinsock.GetDataBuffer();
  sSource = sSource + sBuffer;
}

function oWinsock_OnError(Number, Description, Scode, Source, 
    HelpFile, HelpContext, CancelDisplay) {
  WScript.Echo(Number + ': ' + Description);
}

function oWinsock_OnClose() {
  oWinsock.CloseWinsock();
  WScript.Echo(sSource);

  oWinsock = null;
  bClose = true;
}

while (!bClose) {
  WScript.Sleep(1);
}

在浏览器中?不是真的,但您可以使用 WebSockets http://en.wikipedia.org/wiki/WebSocket

您需要实现 WebSocket 服务器,因此如果您需要直接与套接字通信,则无法从浏览器中进行。但是您可以实现一个代理服务器,在套接字服务器和 WebSocket 服务器之间中继信息。

如果您不需要双向通信,最好的办法是让您的服务器提供一个包装该套接字请求的 Web 服务。然后您的客户可以进行 AJAX 调用。

于 2013-03-16T01:00:37.270 回答