想通过tcp通过tcp将十六进制数据发送到设备

时间:2016-03-26 05:48:32

标签: php sockets tcp

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

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

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

我已经尝试从制造商的程序中获取(赢取app:我认为由VB6创建)。 {t}的fsockopen最接近但传输控制协议不同 标志:

  • 赢取应用:0x18
  • PHP:0x02

传输控制协议

之后
  • win app:具有正确十六进制数据的数据部分
  • PHP:没有数据部分,但在传输控制协议
  • 中有另一个名为Options的子部分

有人可以帮忙吗?

这是我的代码

<?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);
}
?>

0 个答案:

没有答案