2012-05-22 2 views
4

Win32::SerialPortperl 5.10에 사용하려고했습니다 (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