Modbus 통신을위한 CRC 값을 계산하려면 외부 응용 프로그램을 구현해야합니다. 실행 파일은 입력 문자열을 필요로하며, 같은 출력을 다시 제공합니다파이썬 하위 프로세스 .Popen이 stdout에서 작동하지 않습니다.
CRC16 = 0x67ED/26605
CRC16 (Modbus) = 0x7CED/31981
은 내가 programm에 전화를하고 이후에 수동으로 입력에 입력합니다.
p = Popen(["some_file.exe", "-x"], stdin=PIPE)
p.communicate("some_string")
이것은 지금까지 문제가 없습니다.
그러나 출력을 변수 나 추가 파일이 아닌 다른 용도로 저장하려고합니다. 모든 일이
p = Popen([file, "-x"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
아무것도 입력하지 않을 때
나는 표준 출력과 표준 에러 인수가 알고 있지만.
누구에게 아이디어가 있습니까?
미리 감사드립니다.
PS : 윈도우 7
답변 해 주셔서 감사합니다. 나는 모른다. 그러나 이것은 효과가없는 것처럼 보인다. 프로그래머에게 의견을 주어야하기 때문에'stdin = PIPE'가 필요합니다. 이 인수를 사용하는 것은 괜찮지 만'stdout = PIPE'를 추가하는 것은 쉽지 않습니다. 나는 변수'output = ... '에 쓸 수있는 지점까지 가지 않는다. – mulm
@mulm'stdin = PIPE'를 사용하면 stdin에 값을 할당해야하며, 그렇지 않으면 null이된다. –