프로그래밍과 잡담

[C#] SerialPort 사용 시 주의 점 본문

프로그래밍/C#

[C#] SerialPort 사용 시 주의 점

크레온 2022. 7. 30. 11:09

이거 어이가 없네.

 

시리얼통신을 통해서 정보를 가져오는 프로그램을 만들어서 윈도우에서 돌릴 때는 메모리 오류가 없는데 이게 

라즈베리 파이로 올라가서 돌으니까 메모리릭이 발생하네.

 

이런 골때리게 동작을 해서 실수한 부분인데,  결국은 내 실수 였음.

 

여하튼 문제점이 뭐였는지 이제야 찾았네

 

SerialPort 클래스를  열고(Open)  계속 Write를 하니까 버퍼에  데이터가 계속 쌓이는 문제였던거 같음.

이 빌어먹을 마소놈들이 윈도우는 버퍼를 플러시를 하는거 같은데  리눅스에서는 안하는거 같음.

 

여하튼 그래서 전송 방식을 아래와 같이 변경하였다.

  1.  전송 시 SerialPort를 열음
  2. 데이터를 수신 받으면 닫음 (내꺼 같은 경우에는 여러 기기에 던져야하므로 시간 셋팅해서 안오면 닫음)
  3. 위의 과정을 반복하니까 메모리릭 없어짐. 

시리얼포트를 사용하는데 메모리릭 나면  시리얼포트를 제대로 닫았는지 체크해봐야 겠음.

 
반응형
Comments