2014년 12월 22일 월요일

Unity에서 IOException: The Port 'COM##' does not exist. 가 발생할 때

분명히 장치관리자에서는 Com 포트가 잡혀있고
터미널로 시리얼 통신을 해도 정상적으로 데이터를 주고받는데
유독 Unity에서만 저런 문제가 일어나길래 머리를 끙끙 싸매다가 발견한 것.

http://forum.unity3d.com/threads/ioexception-using-serial-dll.59360/
http://support.microsoft.com/kb/115831

결론은 Unity에서 지원하는 .NET 2.0에서 COM10 이상의 번호지정은 지원하질 않는단다.

그동안 이런저런 테스트 때문에 10번 이하의 포트는 사용 중으로 되어있어
아래와 같은 방법으로 모든 포트를 해제했다.

시작-실행-cmd
set devmgr_show_nonpresent_devices=1
start devmgmt.msc

(실제로는 잘되지 않아서 cmd를 관리자 권한으로 실행시켰다)
cmd 창에 위 명령어를 순서대로 치면 장치관리자가 나오는데
장치 관리자의 보기에서 숨김장치 표시를 누르면 할당된 모든 포트번호가 나온다.
일일히 우클릭 후 삭제를 눌러주면 OK.

COM3으로 장치를 재할당해주고 코드를 실행하니 아주 정상적으로 동작....하아