4

我一直在尝试使用该模块Win32::SerialPortperl 5.10也许它与 5.14 有一些问题)。我必须向串行端口发出命令并获取它们的输出。我已经发现 write 将为我完成前面的部分。对于输出部分,我看到了如下实现:

$port_obj->write("ATE");  #assuming we give the AT command Echo
$res = $port_obj->input;

如果这给出了命令的输出,为什么我们不能像下面这样更直观(即使$res会返回写入的位数)并$res捕获写入的输出。

$res = $port_obj->write("ATE");

此外,我还看到了一些实现,$port_obj->read()但我不确定读取和输入方法之间有什么区别。

请帮忙。

4

1 回答 1

0

1.)由于连接的设备,在所有(大多数?)情况下,直接从写入返回接收到的数据将不起作用。如果它不回复或不立即回复怎么办?那里有无数的串行设备,你永远不知道会发生什么。

2.)$PortObj->read是一个阻塞调用,即它一直等到接收到请求的字节数。$PortObj->input是非阻塞的,即它立即返回,告诉你收到了多少字节(如果有的话)。在这一点上,文档有点模糊。

干杯。

于 2012-05-28T08:47:40.290 回答