Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从raspberry pi Web服务器发送CAN总线消息_Javascript_Php_Raspberry Pi_Webserver_Can Bus - Fatal编程技术网

Javascript 从raspberry pi Web服务器发送CAN总线消息

Javascript 从raspberry pi Web服务器发送CAN总线消息,javascript,php,raspberry-pi,webserver,can-bus,Javascript,Php,Raspberry Pi,Webserver,Can Bus,我们正在建造一个应该通过网络控制的漫游者。它由十几个分工的arduino组成。一个专用于语音命令和文本语音转换,两个用于控制超声波传感器阵列,等等 为了广播信息,以便其他元件可以读取和使用他们需要的任何信息,我们决定使用can总线系统。问题位于接口和pi的can帽之间 工作: -具有php构建接口的Pi Web服务器:可访问且工作正常。 -名为can_send的Pi c文件可执行文件,接收两个参数(id和消息)并驱动can帽。 -Arduino can读卡器,一种通用的Arduino,在我们的P

我们正在建造一个应该通过网络控制的漫游者。它由十几个分工的arduino组成。一个专用于语音命令和文本语音转换,两个用于控制超声波传感器阵列,等等

为了广播信息,以便其他元件可以读取和使用他们需要的任何信息,我们决定使用can总线系统。问题位于接口和pi的can帽之间

工作: -具有php构建接口的Pi Web服务器:可访问且工作正常。 -名为can_send的Pi c文件可执行文件,接收两个参数(id和消息)并驱动can帽。 -Arduino can读卡器,一种通用的Arduino,在我们的PC串行监视器上输出它接收的can消息。它可以工作,通过在Pi上启动can_send,它可以获得正确的信息

非工作: -在Web服务器上,在没有刷新或页面的情况下,我们应该单击一个按钮并执行can_send脚本

我们最初的想法是: PHP界面->按钮点击->javascript函数->执行shell\u exec的PHP文件

我们现在在这里感到震惊。不知道我们是在挖坟墓,还是离成功还有一步之遥

Web界面上的按钮:

javascript函数(在网页顶部声明)

此时,单击按钮后,我们将看到一个警报窗口,其中包含我们想要的正确值。 问题是: -ajax函数不调用php脚本或不发送值(我们尝试使用一个简单的表单,在can_传输上使用相同的值和$_POST,结果成功)


即使使用表单,我们也无法通过shell exec进行操作(通过控制台,脚本可以发送作品,但不能使用shell exec)。在这里,我们尝试查看fileexist的路径是否正确,以及具有完整路径或相对路径的bot是否工作。

找到了解决方案。我一到家就把它寄出去。一些js和ajax错误,一个缺少脚本,以及缺少权限(www数据运行传输代码)。
function cantxedx() {
    var x = new XMLHttpRequest();
    x.open("GET", "../SCRIPTS/can_transmission.php?id=15&msg=001" + document.getElementbyId('myRangeThr'), true);
    x.send();
    return false;
}
     </script> 
     //can_transmission.php

     $TXmsgid= $_GET['id'];
     $TXmsg= $_GET['msg'];

     //formattazione stringa

     $wordsize = sizeof($TXmsg);

     if($wordsize<8)
     {
       while($wordsize<8)
       {
         $TXmsg= $TXmsg . "0";
         $wordsize = sizeof($TXmsg);
       }
     }
     if($wordsize>8)
     {
         //placeholder for building long messages
     }
     $TXstring= "sudo /var/www/html/SCRIPTS/c/can_send ".$TXmsgid." ".$TXmsg;
     $handle = fopen("log.txt", "a+");
           fwrite($handle, $TXstring);
     fclose($handle);

     shell_exec($TXstring);

?> 
<div align='center'>
    <p>THROTTLE</p>
</div>
<div class='slidecontainerv'>
    <input type='range' min='5' max='100' step='5' value='50' class='sliderv' id='myRangeThr' orient='vertical' width='500'>
</div>
<div align='center'>
    <p>Value: <span id='throttle'></span>%</p>
</div>

       function cantxebw(jdir) {

            var jid = '10';

            var slider = document.getElementById('myRangeThr');
            var vt = slider.value;
            var vtx = jid + jdir + vt;
            alert(vtx);
            $.ajax({
                  url: '../SCRIPTS/can_transmission.php',
                  type: 'POST',
                  data: {'id':'jid', 'msg':'vtx'},
                  success: function(data) {
                               console.log(data); // Inspect this in your console
                            }
             });
       };
     </script>  ";