WithCoderWithCoderWithCoder

PHP向串口发送十六进制码流的方法

    在PHP中,在与串口进行通信时,一般发送的是十六进制。

    在明确知道发送的十六进制命令时,我们可以使用以下方式发送:

// 向串口发送读取指令
$cmd = "\x01\x03\x00\x00\x00\x01\x84\x0A";
$connection->send($cmd);

    然而,如果命令内容不确定时,我们需要动态的拼接命令内容字符串。此时,拼接完成后,需要将字符串转换为16进制来发送,可以使用以下方法转换。

    字符串转16进制字符串:

/**
 * 字符串转16进制字符串
 * 传入字符串格式:001624180101
 */
function str2hex($string)
{
    $str = '';
    for ($i = 0; $i < strlen($string); $i += 2) {
        $str .= chr(hexdec(substr($string, $i, 2)));
    }
    return $str;
}

     转换完成后,将转换后的十六进制字符串发送到串口即可    

// 转换16进制字符命令并发送
$cmd = str2hex($cmd_str);
$connection->send($cmd);

    

欢迎分享交流,转载请注明出处:WithCoder » PHP向串口发送十六进制码流的方法