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
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 를 사용해서 보다 간편하게 설치하였습니다.


맥에서 손쉽게 패키지를 관리하는 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~

댓글

쿠팡

이 블로그의 인기 게시물

AWS re:Invent (reinvent, 리인벤트) 2019 후기 #2: 라스베이거스 윈 호텔 방문기 (Las Vegas Wynn Hotel)

사이판 월드 리조트 (saipan world resort) 2020년 방문 후기 #3: 사이판 쇼핑리스트 기념품 선물로 강추!!

사이판 월드 리조트 (saipan world resort) 2020년 방문 후기 #1: 리조트에서 생참치회 배달시켜먹기