我需要通过PHP读取输入流。
响应对象:
Serial Object
(
[_device] => .com4
[_windevice] => COM4
[_dHandle] => Resource id #23
[_dState] => 2
[_buffer] =>
[_os] => windows
[autoflush] => 1
)
我需要从[_dHandle]=>资源id#23中提取信息。我提取了元数据
stream_get_meta_data($serial->_dHandle)
并发现以下内容:
Array
(
[wrapper_type] => plainfile
[stream_type] => STDIO
[mode] => r+b
[unread_bytes] => 0
[seekable] => 1
[uri] => .com4
[timed_out] =>
[blocked] => 1
[eof] =>
)
请建议我如何从资源Id:#23 中提取数据
谢谢。
这取决于它是什么类型的资源。您可以使用函数
get_resource_type(),然后根据资源类型使用适当的函数读取它
如果是流,则可以使用fopen、fread等,如果是mysql,则使用mysql函数,如果是xml,则使用xml读取函数等。
从更改您的代码
这是错误的代码更改
$stdin = fopen('php://stdin', 'r');
$res = stream_get_contents($stdin, -1, 10);`
至
$stream = fopen($serial->_dHandle, 'r');
echo stream_get_contents($stream, -1, 10);
fclose($stream);
若$stream为false,那个么它就无法打开;若它有指针,那个么就意味着连接是打开的。如果stream_get_contents()未返回任何数据,则表示该数据不可用或尚未发送。