직렬 포트에서 데이터 수신

직렬 포트에서 데이터 수신

RS232 직렬 포트에서 터미널로 데이터를 수신하고 파일에 대한 지시문을 사용하고 싶습니다. 꽤 간단해야합니다.

cat /dev/ttyS0
cat /dev/ttyS0 > file.txt

그 전에는 장치(생화학 분석기)의 매개변수와 일치하도록 매개변수를 구성했습니다.

sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb

  1. 전송 속도 - 9600
  2. 패리티 - 없음
  3. 비트 - 8비트
  4. 정지 비트 - 2

그런데 터미널에서는 아무 것도 수신되지 않습니다. 그냥 비어 있습니다. 문제는 무엇입니까?

답변1

노력하다미니콤먼저 직렬 포트가 무엇을 반환하는지 확인하십시오. 다음으로 설치하세요sudo apt-get install minicom

다음과 같이 시작합니다(ttyS0의 경우).

sudo minicom -D /dev/ttyS0

Minicom 내에서(을 사용하여) 통신 매개변수를 설정할 수 있으므로 ctrl-A P해당 매개변수가 올바른지 확인할 수 있습니다.

장치가 특정 프로토콜을 사용하는 경우 통신을 시작하려면 명령이 필요할 수 있습니다. 그럼 사용설명서를 한번 살펴보세요.

장치가 하드웨어 핸드셰이킹을 사용하도록 설정되어 있을 수 있습니다. 가능하다면 끄십시오(적어도 처음부터).

끌 수 없는 경우에는 사용자 측에서도 설정해야 합니다. Minicom에서는 under ctrl-A O및 then 입니다 serial port setup.

저는 직렬 통신을 디버깅하기 위해 Minicom을 자주 사용해 왔으며 이것이 가장 잘 작동한다고 생각합니다.

OP에서 추가 정보를 받았습니다.

실험실 장비(Cobas C311)는 ASTM 프로토콜을 사용합니다. 인터페이스에서 "호스트로 보내기"를 클릭하기만 하면 여러 ASTM 레코드가 전송됩니다. 파일로 받기만 하면 됩니다. 다른 설정이 있나요? 데이터 수집을 시작하는 명령은 무엇입니까?...데이터를 파일에 저장하는 방법은 무엇입니까?

올바른 매개변수를 선택했습니다. Minicom에서는 9600 8N2를 보여주고 있습니다. 괜찮기를 바랍니다. 그러나 아무것도 수신하지 않습니다. 단 한 비트도 수신되지 않습니다. 분석기에서는 "기기가 전송 요청으로 ENQ를 전송했지만 호스트가 15초 이내에 ACK 또는 NAK를 반환하지 않았습니다.(링크 시간 초과)"라고 말합니다.

장치는 다음을 사용합니다.ASTM 프로토콜. 장치는 <ENQ>데이터 전송을 시작할 준비가 되었음을 알리는 신호로 문자를 보냅니다. 이는 다른 터미널 프로그램을
사용하여 받을 수 있는 것이 아닙니다 . minicom이 프로토콜을 지원하는 적절한 응용 프로그램 소프트웨어가 필요합니다.

반드시 사용자 설명서를 읽고 설치 디스크(있는 경우)와 제조업체 웹사이트에서 이 프로토콜을 지원하는 응용 프로그램을 확인해야 합니다.
이 장치에 대한 애플리케이션 지원이 없다면 놀랄 것입니다. 그들이 무언가를 제공한다면 그것은 Windows 애플리케이션이거나 일부 예제 코드와 라이브러리일 가능성이 높습니다.

스스로 글을 쓰는 것은 가능하지만 쉽지는 않습니다. Python이 일부 지원됩니다.ASTM그리고 거기에펄 스크립트당신이 시도해 볼 수 있다는 것입니다.

SO에는우편ASTM에 대한 정보가 있습니다..

관련 정보