TIL_230707

Today Jeeho Learned·2023년 7월 7일
0
post-thumbnail

오늘 한 일

  • 디버깅

회고

  • 저번에 확인했던 에러를 확인하기 위해서 어제 야근을 하고 갔다. 어제 저녁에 장비가 돌아와서 드디어 붙여볼 수 있었다. 납품날짜가 임박했던 프로젝트인데, 문제도 생겼고, 내가 디버깅을 할 수 있는 시간이 많지 않을 것 같아서 야근하고 갔다.
  • 저번보다는 좀 더 여유로운 마음으로 디버깅을 해보니까 원인을 파악할 수 있었다.
    uart통신을 6개에다가 이더넷 통신을 통해서 계속해서 데이터를 받고 있었는데 이러다보니 과부화가 일어나서 데이터 패킷에서 조금씩 밀려서 받고 있는 것을 확인했다.
  • 저번에 카운트해주는 값이 음수가 되어서 오버플로가 났었는데, 패킷의 데이터가 밀리면서 CNT해주는 인덱스 값에서 다른 값이 나와 계속해서 음수가 되었다. 다행히 이 부분에 대해서는 전에 프로젝트를 통해서 Queue를 사용해서 데이터를 받는 것으로 처리를 한 적이 있어서 해결방안을 잡을 수 있었다!!
  • 문제는 이번에는 STX, ETX가 1바이트가 아니라 2바이트였다. 우선 1바이트를 처리하던 방법대로 했었는데 안타깝게도.. STX가 0xF1이었는데.. 정말 운이 나쁘게돜ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 체크섬값에서 0XF1값으로 나오는 구간이 생겼다 ㅠㅠ 멘붕쓰~
    STX를 확인하게되면 그때부터 Queue에 데이터를 담아가면서 끝을 확인하고, 그때 패킷길이와 같은지를 확인하고 배열로 복사해서 옮겨주는데 아쉬웠다.
  • 이문제를 해결하고자 굉장히 고민했고, 많은 방법들을 사용해보았는데 조금 간단하게 할 수 있었다.
    큐 카운트 값이 1보다 작은 경우에 data가 0xf1로 확인했을 때 큐를 비우고 데이터를 담아가는 방법을 사용했다. 그리고나서 다시 데이터가 etx가 나타나면서 그때 길이가 패킷길이과 같을때 복사해줘서 사용하는 방법을 채택했다.
  • 장비를 붙여보지는 못했지만.. 루프백 형태를 사용하다보니 내가보내고 받기만하면 되서 그대로 진행했다.
    다행히 13여분 동안 에러가 나지는 않았는데, 오버플로로 예외처리가 나고 있는 상태이다. 왜그런진 모르겠으나,., 일단 데이터를 누락없디 받아지는 것을 확인했고, 다음주에 돌아와서 장비붙여서 시험좀 해보면될 것 같다!
profile
기록해야 (살아)남는다 !

1개의 댓글

comment-user-thumbnail
2023년 7월 10일

머리 좀 아파보이는구만

답글 달기
Powered by GraphCDN, the GraphQL CDN