본문 바로가기

분류 전체보기105

[C#]네트워크 프로토콜 비트 연산 이번 포스팅에서는 네트워크 프로토콜에서 경보나 Fault 정보를 비트 연산을 통해 비트 별 알람 정보로 담아 송수신하는 방법에 대해 정리해 보겠습니다. 아래 이미지는 ESS 안전정보시스템에서 배터리와 관련하여 Warning과 Fault 정보에 대한 프로토콜 정의 일부입니다. Warning과 Fault의 데이터 Type은 INT형으로 비트연산을 통해 경보나 고장 발생 여부를 송수신하도록 요구하고 있습니다. 실제 LG Chem에서 제공하는 배터리 프로토콜에서 관련 정보를 찾아보면 아래와 같습니다. 실제 Warning과 Fault에 대한 부분은 uint16으로 각 비트별(b0~b15) 경보 및 고장 정보를 담을 수 있도록 제공해 주고 있습니다. 안전정보시스템에서 요구하는 Warning과 Fault 정보를 아래.. 2020. 12. 24.
바운싱(Bouncing) 현상 방지 이번 포스팅에서는 버튼 동작시 발생하는 바운싱(Bouncing) 현상과 이를 방지하는 방법에 대해 정리해 보겠습니다. 바운싱(Bouncing)이란 기계적인 접점을 갖는 스위치들은 접점이 붙거나 떨어지는 시점에 접점이 여러 번 On/Off 되는 현상이 발생합니다. 이러한 현상은 약 100ms 정도 되는 순간에 여러 번 반복하기 때문에 의도하지 않는 인터럽트가 발생할 수 있습니다. 이러한 바운싱 현상을 제거해야 정상 동작을 할 수 있는데 이를 디바운싱(Debouncing)이라고 합니다. 이를 그림으로 나타내면 아래와 같습니다. 디바운싱을 하는 방법에는 하드웨어적인 방법과 소프트웨어적인 방법이 있는데 여기서는 소프트웨어적으로 디바운싱 하는 방법에 대해 알아보겠습니다. 소프트웨어적으로 디바운싱을 하기 위해서 b.. 2020. 12. 23.
[C#] ushort를 상위 바이트와 하위 바이트로 추출하기 이번 포스팅에서는 네트워크 통신 프로토콜에서 ushort를 상위 Byte와 하위 Byte로 나누어 값을 송수신할 경우 사용하는 방법에 대해 정리해 보도록 하겠습니다. 아래의 이미지는 LG Chem에서 생산한 Battery의 프로토콜 예시 입니다. Modbus address 40068 번지를 보면 uint16 Type으로 하나의 Value에서 상위 Byte와 하위 Byte로 나누어 Max Module Number와 Min Module Number의 값을 참조할 수 있도록 명기하고 있습니다. 따라서 우리는 Modbus에서 받은 uint16을 Byte 배열로 나누어서 상위 Byte와 하위 Byte를 추출해 Data를 사용해야 합니다. 이러한 경우에는 가장 손쉽게 BitConverter 클래스를 사용하는 방법이.. 2020. 12. 22.
Pico real plus VR 사용 후기(업데이트 필수) 이번에 스마트폰을 5G로 갈아타면서 Pico real plus VR을 구매하였습니다. 정상 가격은 꽤 비싼 편이지만 최저가 검색을 해보면 4만 원 중후 반대에서 구매가 가능합니다. 참고로 호환기종은 갤럭시 20/ 노트 20 이면서 LG 유플러스를 통해 가입이 되어 있어야 사용이 가능하다고 합니다. VR 앱과 컨트롤러 앱을 먼저 설치하고 바로 폰에 연동을 해보았습니다. 디자인도 심플하고 조작법도 매우 간단해서 쉽게 생각했는데 폰 연동 결과 매우 실망스럽게도 View가 왼쪽으로 90도 틀어져서 나오고 VR모드 설정에서도 좌우 2 분할 화면이 수직으로 보이는 등 제품 불량이 아닌가 판단되었습니다. Pico 홈페이지에도 들어가 보았지만 사용 관련 도움말 조차 찾아볼 수 없었고 사용 설명서도 너무 간단하게 나와 .. 2020. 12. 15.