在明确知道发送的十六进制命令时,我们可以使用以下方式发送:
// 向串口发送读取指令 $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);