希望使用php通过tcp向设备发送十六进制数据

希望使用php通过tcp向设备发送十六进制数据,php,sockets,tcp,Php,Sockets,Tcp,我想使用PHP连接到数字仪表并获取其值(电压、电流、功率等)。我要发送的命令是FF FF 00 04 EE 14 0E 06 00 01 00 我尝试将fsockopen与tcp结合使用,并使用wireshark进行捕获。它发送选项而不是数据 我尝试将fsockopen与udp一起使用,并使用wireshark进行捕获。变速箱控制存在差异,不能使用十六进制作为数据(可以使用普通文本作为数据) 我已经尝试从制造商的程序中捕获(win应用程序:我认为是通过VB6创建的)fsockopen与tcp最接

我想使用PHP连接到数字仪表并获取其值(电压、电流、功率等)。我要发送的命令是
FF FF 00 04 EE 14 0E 06 00 01 00

我尝试将
fsockopen
与tcp结合使用,并使用wireshark进行捕获。它发送选项而不是数据

我尝试将
fsockopen
与udp一起使用,并使用wireshark进行捕获。变速箱控制存在差异,不能使用十六进制作为数据(可以使用普通文本作为数据)

我已经尝试从制造商的程序中捕获(win应用程序:我认为是通过VB6创建的)
fsockopen
与tcp最接近,但传输控制协议不同 旗帜:

  • win应用程序:
    0x18
  • PHP:
    0x02
后传输控制协议

  • win应用程序:包含正确十六进制数据的数据部分
  • PHP:没有数据部分,但在传输控制协议中有另一个名为选项的子部分
有人能帮忙吗

这是我的密码

<?php
$fp = fsockopen("tcp://192.168.0.3", 9999, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
  $temp = explode(" ", "FF FF 00 00 00 04 EE 14 0E 06 00 01 00 01 00");
for($i=0;$i<sizeof($temp);$i++)
{
  $obuf[$i] = chr(hexdec($temp[$i]));
  fwrite($fp, chr(hexdec($temp[$i])));
}

   fwrite($fp, $obuf);
   while ( !feof( $fp ) ) { 
      $ret .= fgets( $fp, 4096 ); 
   }
   echo $ret;
   fclose($fp);
}
?>


您能发布到目前为止的代码吗?只需添加即可。请帮助清理语言,进行一些格式化。计算机中的所有内容都以二进制/十进制/十六进制形式存在-解释不同。那么问题是什么呢?