티스토리 뷰

공모전을 준비하면서 유니티와 아두이노사이에서 데이터를 주고 받을 일이 생겨 열심히 하던중 한가지 문제가 생겼다.

아두이노에서 계속해서 "Hello" 라는  메시지를 시리얼로 보낸 후 C#을 통해 읽는 형식인데

Unity를 이용해 시리얼에서 값을 읽어 오게 하였다.

그런데 넘어 오는 값이 제대로 오는 것도 있고 짤리는게 꽤나 많다.

문자는 이정도 짤려도 큰 문제가 없을 수도 있지만, 만약 구조체나 다중 데이터를 보내야 할때 큰 문제가 생기기 때문에 문제를 해결해야 한다.

하루 걸러 이유를 찾아냈는데. 이유는 아두이노에서 시리얼에 메시지를 쓸때 한 번에 넘기는 것이 아닌 1 바이트씩 시리얼에 쓰게 된다.

그래서 아두이노에서 메시지를 쓰던 도중에 C#에서 읽어버리니까 메시지가 다 써지지 않았음에 불구하고 읽어버리고 나머지는 버려지게 되는 것이였다.

즉, 간단히 말해서 둘의 업데이트 싱크가 맞지 않는 것이다.

그래서 위와 같이 어느정도 아두이노와 싱크를 맞추기 위해 업데이트 속도를 고정 했다.

이제 위와 같이 값이 제대로 넘어 온다.


--수정--

혹시 몰라서 계속 실험 해보았는데 썻던것 처럼 어느정도 딜레이를 줘도 데이터가 끊기는 현상이 발생했다.

그래서 마지막 수단으로 ReadLine 함수 대신 ReadByte로 1바이트씩 읽어 ASCII 포맷으로 변환시켜 출력하니 잘 작동한다!

역시 1바이트씩 읽어서 출력하는게 가장 안정적인 방법 같다.

'C#' 카테고리의 다른 글

유니티에서 아두이노와 시리얼 통신하기  (1) 2017.09.24
string 타입에서 ""과 null은 같을까?  (2) 2017.06.27
9. 구조체(Structures)  (0) 2016.06.30
8. 확장 메소드(Extension Method)  (0) 2016.06.29
7. get set  (1) 2016.05.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함