Php 使用AJAX与本地网络上的示波器接口

Php 使用AJAX与本地网络上的示波器接口,php,ajax,oscilloscope,Php,Ajax,Oscilloscope,我正在尝试与IP地址为192.168.1.1的示波器连接。它有一个内置的web服务器,由于缺少更好的词汇,它很差劲。它有大量的iframe,只能在IE中完全工作。我正在构建一个开源的web应用程序,它可以轻松地与示波器交互,并实时显示波形 无论如何,我尝试在Internet Explorer中运行此代码(尽管我想在Chrome中运行),但运气不佳: REMOVED BECAUSE IT HAD SILLY MISTAKES 当我在Internet Explorer中打开文件时,我确实看到URL

我正在尝试与IP地址为192.168.1.1的示波器连接。它有一个内置的web服务器,由于缺少更好的词汇,它很差劲。它有大量的iframe,只能在IE中完全工作。我正在构建一个开源的web应用程序,它可以轻松地与示波器交互,并实时显示波形

无论如何,我尝试在Internet Explorer中运行此代码(尽管我想在Chrome中运行),但运气不佳:

REMOVED BECAUSE IT HAD SILLY MISTAKES
当我在Internet Explorer中打开文件时,我确实看到URL被重写为localhost,即使localhost不是192.168.1.1。输入localhost会让我进入我的本地web服务器(因此,如果我能理解的话,我愿意使用PHP来完成这篇文章)

非常感谢您的任何见解。谢谢你的阅读

编辑:以下是Wireshark的TCP流:

POST /Comm.html HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: 192.168.1.1/Comm.html
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Content-Type: text/plain
Accept-Encoding: gzip, deflate
Host: 192.168.1.1
Content-Length: 38
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
COMMAND=CURVe?
gpibsend=Send
name=
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
MIME-Version: 1.0
Connection: close
Content-Type: text/html
Date: TUE --
Content-Length: 8506
<HTML>..NUMBERS/HTML CUT OUT TO SAVE SPACE....22,22,22,2</HTML>
但事实并非如此:我正在尝试阅读TCP跟踪中详述的响应:

$.ajax(
    {
        url: 'http://192.168.1.1/Comm.html',
        dataType: 'text',
        type: 'post',
        data: {command: 'ZOOM:HORIZONTAL:SCALE?',
                gpibsend: 'Send'},
        success: function(data)
        {
            window.alert(data)
        }
    })

大多数浏览器都不允许使用ajax调用去访问该脚本的源服务器。所以在你的剧本里似乎是错的

另一方面,我不明白为什么要指定服务器的整个IP地址。通常指向应该返回答案的文件就可以了

另一件事,网络服务器之王在示波器上运行什么。我这样问是因为它们不是常见的机器,尤其是在Web服务器上


另外,如果您想要实时更新,请不要使用AJAX。使用WebSocket。你看,Ajax基本上是对Web服务器的调用,就像调用网站一样,当我们想要创建一个必须快速获取数据的应用程序时,这个过程非常长。因此,聪明的人发明了WebSocket API用于浏览器。您知道,套接字是一种直接连接,因此您必须实现自己的协议。但用于与示波器通信,这可能意味着制作一个服务器文件,侵入内部软件,每0.1s吐一次数字。JS将捕捉这些数字,并将另一个数据添加到结果表中,然后重新绘制整个绘图

我只是想跟进一下,以防有人在谷歌上看到这个。这里有多个选项:

  • 将网站托管在域上,编辑主机文件并将网站域的子域指向LAN IP地址

  • 创建VPN并从静态IP地址访问所有计算机

  • 在禁用安全功能的情况下运行浏览器

  • 如果您可以更改示波器上的域名服务器,则可以托管您自己的DNS,并将任何给定地址解析为LAN连接

  • 在计算机上运行LAMP/WAMP服务器,并通过PHP通过AJAX进行调用(从服务器)


  • +1表示“它有很多iFrame,只在IE中完全有效。”哇。抱歉。调试器(F12)中是否有任何错误?我知道在IE中,即使出现
    控制台.log
    错误也会停止javascript。这可能对您有帮助,也可能没有帮助
    jQuery
    已使用但未调用?可能存在跨域限制…我不知道它运行的是哪种“服务器”,但我对Internet Explorer发出的请求进行了数据包分析。我是否可以从localhost执行此操作?这里是:由于注释代码字符limitOk,所以在原始帖子中发布。您的第一个代码段将指向执行某些计算的内容,因此您有一个输出。在第二个代码段中,您指向html文件,所以在您调用的可爱警报中,应该是所有html。不过,我不知道你现在想要实现什么。。。
    $.ajax(
        {
            url: 'http://192.168.1.1/Comm.html',
            dataType: 'text',
            type: 'post',
            data: {command: 'ZOOM:HORIZONTAL:SCALE?',
                    gpibsend: 'Send'},
            success: function(data)
            {
                window.alert(data)
            }
        })