希望使用php通过tcp向设备发送十六进制数据
我想使用PHP连接到数字仪表并获取其值(电压、电流、功率等)。我要发送的命令是希望使用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最接
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);
}
?>
您能发布到目前为止的代码吗?只需添加即可。请帮助清理语言,进行一些格式化。计算机中的所有内容都以二进制/十进制/十六进制形式存在-解释不同。那么问题是什么呢?