핵심요약: 응용 프로그램이 열려 있는 COM 포트의 COM 포트 상태를 프로그래밍 방식으로 모니터링할 수 있습니까? 그리고 방법은 무엇입니까?
ttyS0(COM1)을 통해 호스트 HOST에서 다른 장치 CLIENT로 데이터 통신을 수행하므로 해당 포트가 확실히 사용 중입니다. CLIENT는 포트의 HOST에 데이터를 보낼 뿐만 아니라, CLIENT의 배터리가 부족할 때 핀("RI 핀 9")을 로우에서 하이로 설정하여 HOST에 상황을 알립니다. 그런 다음 HOST는 정상 종료를 시작할 수 있습니다.
직렬 포트가 한 번만 열렸다가 잠길 수 있는 경우 genpower(UPS 모니터링 도구)와 같은 프로세스가 PIN 상태를 어떻게 확인할 수 있습니까?
추가 정보를 제공하려면:
특정 직렬 포트의 특정 핀이 높아지는 것을 확인하면 시스템을 종료할 수 있는 전원 모니터링 데몬 "genpowerd"가 있습니다. Ubuntu 10에서는 직렬 포트가 두 개의 임의 끝점 사이의 데이터 연결로도 사용되고 있음에도 불구하고 이 작업을 수행하는 것으로 보입니다(직렬 포트가 확실히 사용 중임을 의미). Google에서 직렬 포트를 검색했는데 이전 Unix 버전에 추가 기능 파일이 있는 것 같습니다.
/dev/cua0
/dev/ttyS0은 제외됩니다. 공급자는 genpower가 더 이상 Ubuntu의 일부가 아니기 때문에 더 이상 UPS 감지를 사용할 수 없다고 주장합니다. /dev/cau*가 사라졌기 때문인지 궁금합니다. 내가 원하는 것을 달성하는 데 사용할 수 있습니까? 나는 strace가 관련되지 않았다고 확신합니다. genpowerd 유틸리티는 간단한 명령으로 직렬 포트를 엽니다.
fd = open(port, O_RDWR | O_NDELAY))
그런 다음 ioctl(...) 호출을 수행하십시오.