2012-05-22 62 views
4

我一直试图在perl 5.10中使用模块Win32::SerialPort(可能它与5.14有一些问题)。我将不得不向串行端口发出命令并获得它们的输出。我已经认识到写作会为我做更早的部分。对于输出部分,我已经见过这样实现:perl Win32 :: SerialPort:读取和输入方法之间的区别

$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(),但实现我不知道是什么的读取和输入方法之间的差异。

请帮忙。

回答

0

1.)由于连接了设备,直接从写入接收的数据不会在所有(大多数?)情况下工作。如果它没有回复,或者没有立即回复,该怎么办?那里有不计其数的串口设备,你永远不会知道什么期望回来。

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

干杯。

+0

我发现输入只不过是在后台读取,如果在调用之前给予足够的睡眠,效果会很好。 – CuriousSid

相关问题