https://github.com/inthehand/32feet
GitHub - inthehand/32feet: Personal Area Networking for .NET. Open source and professionally supported
Personal Area Networking for .NET. Open source and professionally supported - inthehand/32feet
github.com
InTheHand 라이브러리 특징
- API 스타일: IObservable 대신 표준 async/await와 이벤트 핸들러(+=, -=)를 사용합니다. 이는 많은 C# 개발자에게 더 친숙할 수 있습니다.
- 스캔 방식: DiscoverDevices()는 호출 시점에 발견된 장치 목록을 동기적으로 반환합니다. 실시간으로 목록을 업데이트하려면 예제처럼 주기적으로 호출하는 로직을 직접 구현해야 합니다.
- 객체 모델:
- BluetoothDeviceInfo: 스캔 시 발견되는 장치의 기본 정보(이름, 주소 등)를 담고 있습니다.
- BluetoothDevice: 실제 연결하고 통신하는 데 사용되는 객체입니다. BluetoothDevice.FromId()를 통해 BluetoothDeviceInfo의 주소로 객체를 가져옵니다.
- GattService, GattCharacteristic: BLE의 계층 구조를 그대로 따르는 객체들입니다.
- 이벤트 처리: Notification 수신(CharacteristicValueChanged)이나 연결 끊김(GattServerDisconnected)과 같은 비동기 이벤트는 C#의 표준 이벤트를 통해 처리합니다. ViewModel이 해제될 때 이벤트 핸들러를 반드시 제거(-=)하여 메모리 누수를 방지해야 합니다.
- 권한 관리: Shiny와 달리 InTheHand는 권한 요청을 자동으로 처리하지 않습니다. MAUI의 Permissions API를 사용하여 개발자가 직접 권한을 확인하고 요청해야 합니다.
- 설치할 패키지: InTheHand.Net.Bluetooth
이전에 Shiny.NET 라이브러리는 적용할 때 시행착오가 많았는데 위에서 제시한 특징과 같이 이전 C# 사용자들이 보기에 쉬운 구조로 되어 있어 금방 적용을 할 수가 있었다.
이벤트 핸드러를 이용하기 때문에 Windows WPF .NET으로 개발한 소스 코드와 유사하게 적용이 가능해서 좋았다.
Shiny.NET에서는 윈도우로 실행하면 BTLE 장치 검색이 안되었는데 이 라이브러리는 Windows, Android 모두 작동이 되는 것을 확인했다. 따라서 MAUI를 사용해서 좀도 다양한 장치에서 실행이 가능할 것 같다.

<첨부 파일>
LIST
'스마트 장치 개발' 카테고리의 다른 글
| MAUI TabbedPage와 Shell 사용 비교 (0) | 2025.10.16 |
|---|---|
| MAUI BTLE Shiny Client Sample Code (1) | 2025.10.14 |
| Visual Studio Code 개발 편의성 Font 설정 (0) | 2025.09.19 |
| .NET Compact Framework How-to Topics (1) | 2009.12.16 |
| file dialog for C# (0) | 2009.12.16 |