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 등 다양한 포트들을 제어할 수 있도록 지원해주니 필요하신 분들이 꽤 계실듯...
앞선 포스팅 에서 맥의 패키지 관리자 #Homebrew 를 소개해드렸는데요. socat 역시 위의 공식? 사이트에서 패키지를 다운받아
설치하는 방법도 있지만, 저는 Homebrew 를 사용해서 보다 간편하게 설치하였습니다.
Homebrew 를 통해 socat 를 설치하는 명령어는 아래와 같습니다.
brew install 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 명령어 실행시마다 번호는 바뀔 수 있습니다.)
그럼 터미널을 추가로 열어 데이터를 보내고 받는 테스트까지 해보도록 하죠.
// ttys003 포트 데이터 수신 대기 cat /dev/ttys003 // ttys004 포트 데이터 송신 개시 echo "ffff" > ttys004 // ttys003 포트 데이터 수신 ffff
이런 식으로 테스트가 완료되었습니다. 시리얼 외에도 다양한 통신 테스트가 가능하니 필요하신 분들은 참고부탁드려요~
오늘도 건강한 하루 보내세요
I'll be back~
댓글
댓글 쓰기