我一直在尝试使用Win32::SerialPort
中的模块perl 5.10
(也许它与5.14有一些问题)。我必须向串口发出命令并获取它们的输出。我已经发现写作会为我做早期的部分。对于输出部分,我看到了类似的实现:
$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()
的一些实现,但我不确定read和输入方法之间有什么区别。
请帮忙。
答案 0 :(得分:0)
1。)由于设备已连接,直接从写入中返回接收的数据将不适用于所有(大多数?)情况。如果它没有回复,或者没有立即回复怎么办?那里有无数的串行设备,你永远不会知道会发生什么。
2。)$PortObj->read
是一个阻塞调用,即等待直到收到请求的字节数。 $PortObj->input
是非阻塞的,即它会立即返回,告诉您收到了多少字节(如果有)。关于这一点,文档有点模糊。
干杯。