직렬/RS232를 통해 Linux 호스트로 메시지를 보내기 위한 보편적인 "표준"이 있습니까?

직렬/RS232를 통해 Linux 호스트로 메시지를 보내기 위한 보편적인 "표준"이 있습니까?

일부 작업을 수행한 다음 결과를 직렬 포트를 통해 Linux를 실행하는 컴퓨터로 보내는 Arduino 프로젝트가 있습니다. 이는 9600 보드의 RS232 연결이며, 9핀 COM 포트에 연결되거나 USB/RS232 어댑터를 사용합니다(어쨌든 결국 동일함).

이제 사용할 수 있습니다미니 컴퓨터/dev/ttyS0에서 직접 읽을 수 있지만 나만의 솔루션을 구축하기 전에 일종의 보편적인 표준이 이미 존재하는지 알고 싶습니다. 상식적으로 보면 *NIX의 수십 년 동안 누군가가 무언가를 구축했음이 틀림없습니다. 하지만 지금까지 제가 찾은 것은 대부분 AT 명령 세트를 수동으로 읽거나 사용하는 것에 관한 것인데, 여기에는 실제로 적용되지 않습니다.

"RS232의 시스템 로그"와 같은 것입니다. 내 데이터 구조는 유연하며 일부 표준 메커니즘을 사용하면 다른 도구도 여기에 연결할 수 있습니다. 이미 표준 소프트웨어가 있고 데이터의 최종 소비자가 어떤 표준 위치에서든 이를 얻을 수 있다면 수신 소프트웨어를 직접 구축하고 싶지 않습니다.

추가됨: 데이터 자체는 본질적으로 센서 데이터입니다(몇몇 온도 센서가 연결되어 있고 기능을 켜거나 끌 수 있는 몇 가지 버튼이 있습니다). 결국 일부 데이터로 보낼 생각입니다.열린 표시기형식 - 하지만 말했듯이 저는 매우 유연하며 중간 표준 형식(가급적 사람이 읽을 수 있는 형식)을 사용하여 Arduino > RS232 > Linux > MyOwnConverter > EventualConsumer를 수행할 수 있습니다. Linux 측은 수신 및 저장만 하면 실제 사용자 정의 도구가 처리를 처리합니다. 저는 가능한 경우 "수신 및 저장" 부분을 기존 도구에서 처리하는 것을 선호합니다.

답변1

나는 Linux의 세부 사항을 모른다. 센서 데이터 엔지니어링에 대한 보다 일반적인 표준 중 하나는 다음과 같습니다.모드버스

Linux에는 몇 가지 편리한 테스트 도구가 있습니다(예:https://github.com/epsilonrt/mbpoll) 그리고 자신만의 Modbus 메인 프로그램을 작성하는 데 사용할 수 있는 많은 표준 라이브러리가 있습니다. 따라서 원하는 언어로 사용할 수 있어야 합니다.

궁극적으로 이는 자신만의 소프트웨어를 작성하는 것을 선호한다는 의미일 수 있지만 최소한 일부 구조를 제공하게 됩니다.


Modbus는 요청/응답 프로토콜입니다. 일반적으로 호스트를 마스터로 설정하고 센서(Arduino)를 슬레이브로 설정합니다. 이는 Arduino가 지속적으로 데이터를 전송하도록 하는 대신 Arduino를 지속적으로 폴링한다는 의미입니다.

Modbus는 레지스터 개념을 중심으로 작성되었습니다. 레지스터 값을 요청하고 값을 설정하는 구조를 제공합니다. 따라서 센서 하드웨어는 일반적으로 각 값(예: 전압, 전류, AC 주파수)을 서로 다른 레지스터로 갖습니다. 이는 명령을 내리는 것이 레지스터 설정 측면에서 구조화되는 것과 같습니다.

내가 본 곳에는 일반적으로 부동 소수점 레지스터와 정수 레지스터가 혼합되어 있고 여러 레지스터에 걸쳐 단일 값(예: 64비트 값 제공)이 있습니다.

답변2

페르마타또 다른 옵션입니다. 이를 처리할 수 있는 라이브러리가 있습니다.많은 프로그래밍 언어.

Firmata 라이브러리는 호스트의 소프트웨어와 통신하기 위해 Firmata 프로토콜을 구현합니다. 이를 통해 사용 중인 프로그래밍 환경에 대한 자체 프로토콜과 개체를 만들지 않고도 사용자 정의 펌웨어를 작성할 수 있습니다.

센서를 읽고 장치에 출력을 쓸 수 있을 뿐만 아니라 폴링할 수도 있습니다.

예를 들어 Python에서는 다음을 사용합니다.이 도서관:

DIGITAL13의 LED를 끄세요.

board.digital[13].write(0)

시뮬레이션 입력 읽기(반복기 이해):

board.analog[0].enable_reporting()
board.analog[0].read()

Arduino에서는 StandardFirmdata를 업로드하고 스케치 없이 즉시 작업을 시작할 수 있습니다.

관련 정보