본문 바로가기

IT 관련/개발 자료

socat - MacOS / Linux 에서 serial port test (시리얼포트 테스트)가 필요해요!!

반응형

수행하는 프로젝트 중 #PLC (Power Line Communication) 와 #RS485 방식으로 #serial 통신을 하는 부분이 있었습니다.

다른 팀원들이 Linux PC 에 #USB to Serial (RS485) converter 로 PLC에 연결하여 테스트를 진행했는데,

 


1. PC 에서 PLC로 데이터 송신하는 TX 는 정상!

2. PLC 에서 PC 로부터 데이터 수신받는 RX 도 정상!

3. PLC 에서 PC로 응답 데이터 송신하는 TX 도 정상!

4. PC 에서 PLS 로부터 데이터 수신받는 RX 가 이상!!!

※ #TX : 데이터 송신 / #RX : 데이터 수신


 

요런 증상이 생겨 저도 투입되어 테스트를 진행하게 되었네요. 이럴 경우 크게는 아래 4가지 사항에 대한 점검해야 합니다.


1. 개발된 테스트 코드 오류

2. Linux 의 컨버터 드라이버 설치 오류

3. USB to Serial Converter 이상

4. 장비간 결선 이상


 

우선 장비까지 움직이기 제 자리 컴퓨터에서 바로 해볼 수 있는 1. 개발된 테스트 코드 오류 부분에 대해 점검해보았습니다. ㅎㅎ

 

통신 테스트를 하기 위해선 제 PC와 데이터를 송수신할 장비가 필요한대요.

가져오기 귀찮으니 제 PC에 가상 포트를 추가하여 송신과 수신을 다 테스트해보고자 열심히 #구글링 을 시작합니다!

역시 다양한 정보들이 나오네요. 그 중... Linux 와 MacOS 환경에서 사용할 수 있는 #socat (SOcat CAT) 이라는게 있네요.

지금 필요한 serial port 외에 tcp, udp 등 다양한 포트들을 제어할 수 있도록 지원해주니 필요하신 분들이 꽤 계실듯...

socat Site 바로가기

 

socat

dest-unreach / socat socat - Multipurpose relay Abstract what: "netcat++" (extended design, new implementation) OS: AIX, BSD, HP-UX, Linux, Solaris e.a. (UNIX) lic: GPL2 inst: tar x...; ./configure; make; make install doc: README; socat.html, socat.1; xio.

www.dest-unreach.org

 

앞선 포스팅 에서 맥의 패키지 관리자 #Homebrew 를 소개해드렸는데요. socat 역시 위의 공식? 사이트에서 패키지를 다운받아

설치하는 방법도 있지만, 저는 Homebrew 를 사용해서 보다 간편하게 설치하였습니다.

 

2020/02/24 - [IT 관련/프로그램 자료] - 맥에서 손쉽게 패키지를 관리하는 Homebrew (Mac OS 용 패키지 관리자)

 

맥에서 손쉽게 패키지를 관리하는 Homebrew (Mac OS 용 패키지 관리자)

오늘은 앱등이로써 살아가는데 큰 도움을 주는 툴을 하나 소개해드리고자 합니다~ 바로바로~ Homebrew 라고 불리는 맥용 패키지 관리자입니다. https://brew.sh/index_ko Homebrew The Missing Package Manager f..

hsnation.tistory.com

 

Homebrew 를 통해 socat 를 설치하는 명령어는 아래와 같습니다.

brew install socat
homebrew가 socat 설치하는 이써빌리티 실행 모습

 

마지막에 pemission 관련 에러는 못본척 해주세요~ 이상없이 실행됩니다.

이제 socat을 이용하여 가상 시리얼 포트를 생성합니다.

socat -d -d pty,raw,echo=0 pty,raw,echo=0
2020/02/27 11:00:02 socat[27652] N PTY is /dev/ttys003
2020/02/27 11:00:02 socat[27652] N PTY is /dev/ttys004
2020/02/27 11:00:02 socat[27652] N starting data transfer loop with FDs [5,5] and [7,7]

위의 명령으로 제 PC에서 2개의 가상 포트를 생성한 결과입니다.

해당 커맨드가 실행 중엔 ttys003과 ttys004 두개의 가상 포트를 사용할 수 있습니다.

(Mac 환경에서 장치 관련 폴더는 /dev 이고, 시리얼포트는 ttys 뒤에 숫자로 구성되며 socat 명령어 실행시마다 번호는 바뀔 수 있습니다.)

 

그럼 터미널을 추가로 열어 데이터를 보내고 받는 테스트까지 해보도록 하죠.

socat 을 통한 tx, rx 테스트
// ttys003 포트 데이터 수신 대기
cat /dev/ttys003

// ttys004 포트 데이터 송신 개시
echo "ffff" > ttys004

// ttys003 포트 데이터 수신
ffff

이런 식으로 테스트가 완료되었습니다. 시리얼 외에도 다양한 통신 테스트가 가능하니 필요하신 분들은 참고부탁드려요~

오늘도 건강한 하루 보내세요

I'll be back~

반응형