시간 날때마다 Pyside 로 한번 만들어본 시리얼 통신 프로그램
파이썬은 라이브러리가 잘 되어 있어 개발이 쉽고 편하다.
기본 시리얼 통신은 아래 소스로 참고했고
https://github.com/y252328/ATerm
챠트는 파이썬 유명한 matplot 사용함.
1번에 챠트 파싱할 조건 추가.
첫 글자는 파싱 하기위한 영문자 이후 숫자로 되어야 하고 , 로 구분함.
#chart, 1, 2, 3, 4, 5
최대 10개 까지만 표시됨... 그 이상은 챠트 보기 어려워서..
파싱 첫 글자 #ch 추가 하면 아래 데이터가 별도로 추가되고, 챠트 버튼 누르면 하기 처럼 표시됨.
save 버튼 누르면 챠트 CSV 파일로 저장됨.
나머지 버튼은 matplot에서 제공하는 기능이고, 그냥 쓰다보면 알게 됨.
200ms 주기까지는 실시간으로 표시되나 그 이하는 챠트 그리는 기본 속도가 있어 수신 완료 후 표시됨.
한개 exe 파일로 만들어서 초기 실행시 약간 지연 있음.
기본적인 설정들은 setting.yaml로 저장됨
Ver 0.0.4
- 키 up/ down 으로 송신 히스토리(최대10) 변경
- 챠트 사이즈 800 -> 900 변경
- 미사용 모듈 삭제.
Ver 0.0.5
- 수신 안되는 부분 수정.
Ver 0.0.6.1
- 수신 null 처리추가.
- UI 사이즈 수정.
Ver 0.0.6.2
- 수신 시간 체크 박스 추가.
- UI 사이즈 수정.
- 아스키문자가 아닌 문자(hex) 예외 처리 추가.
- 수신방식 수정, 설정파일에 수신 타이머(rcvTimer) 추가.
- 기본 bps 추가.
프로그램 다운 ver 0.0.8.1
Ver 0.0.8.2 (23.04.02)
- setting.yaml 열어 해당값 편집 하고 다시 실행
chartUpdateTimer: 30 rcvTimer: 20
수신 데이터 50ms 주기는 실시간? 으로 표시되는 것 같다..
챠트 그리고 있는 중에 데이터 수신하면 수신 시간이 좀 밀려서 찍힌다..
Matplotlib 특성상 챠트 삭제 후 다시 그려야 해서 챠트 누적 데이터가 많을 수록 그리는 시간이 점점 늘어남
고정된 데이터 수만 그리는 방법도 있긴하는데 이건 좀 목적에 맞지 않는 것 같음..
프로그램 다운 ver 0.0.8.2
# 최신 파이썬 3.11 은 pyside2 가 설치 안된다..pyside6으로 설치는 되는데 UI 호환이 안되서 실행 안됨. ㅎ
=> 3.10 으로 설치해야 함
Ver 0.0.8.4 (23.04.16)
1) 파이썬 3.11.4 에 pyside6으로 적용.
2) 장시간 수신 데이터가 많아지면, 메모리가 증가하면서 멈추는 증상(응답없음)이 있다.
- 파이썬 자체가 메모리 소모가 많음...
- 기본 실행시만 70MB 넘고 수신데이터 추가 될수록 메모리 증가됨.
3) 디버깅하려고 했는데 발생빈도도 낮고 시간이 없어서 수신데이터 파일 저장 후 삭제 처리 추가함.
- setting.yaml 파일에 해당 기능 추가
autoClearCnt: 1000000 => 수신갯수 1000000 넘을 경우 수신데이터 삭제(clear)..상황에 맞게 갯수 수정해서 적용.
clear 버튼 동작시 수신데이터 파일 저장 여부
autoSaveFt: 0 => 하단 필터 데이터 저장 여부 (0은 저장안함)
autoSaveLog: 1 => 상단 전체 데이터 저장 여부 (1은 저장)
프로그램 다운 ver 0.0.8.4