Java 프로그램 테스트를 위해 직렬 포트를 비활성화한 다음 활성화해야 합니다.
man
페이지에 다음과 같이 적혀 있기 때문입니다 setserial
.UART 유형 none을 사용하면 포트가 비활성화됩니다.", 포트를 비활성화하곤 했습니다 sudo setserial /dev/ttyS4 uart none
. 이로 인해 직렬 포트가 성공적으로 비활성화되었습니다. 직렬 포트를 다시 활성화하기 위해 사용했고 sudo setserial /dev/ttyS4 -a autoconfig
포트가 예상대로 시작되었습니다.
포트를 비활성화한 후 다음 명령을 사용하여 포트를 열려고 했습니다.자바 gnu.io.CommPortIdentifier기능. 함수를 실행한 후 포트를 활성화하려고 하면 gnu.io.CommPortIdentifier
다음과 같은 출력이 나타납니다.
$ sudo setserial /dev/ttyS4 -a autoconfig
Cannot autoconfigure port: Device or resource busy
이 문제를 어떻게 해결할 수 있나요? 직렬 포트를 활성화/비활성화하는 더 좋은 방법이 있습니까? 아니면 포트에 대한 요청 목록을 지울 수 있나요?
분명히 내 테스트가 실행 중이기 때문에 프로세스를 직접 종료할 수는 없습니다.
답변1
직렬 포트를 비활성화한 후 /dev/ttySx를 제거하면 Java에서 gnu.io.CommPortIdentifier에 더 큰 문제가 발생할 것이라고 생각합니다.
다시 활성화해야 하는 경우 먼저 MAKEDEV 스크립트 또는 mknod 명령을 사용하여 노드를 생성해야 합니다.여기직렬 장치 생성에 대한 정보입니다.
답변2
/var/lock/LCK..ttyS4
를 사용하여 제거해 볼 수 있습니다 rm
. 제가 아는 한, 이 방법으로 장치를 잠금 해제해야 합니다.