Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Cached Image
- Flutter 강좌
- flutter
- FutureBuilder
- node.js
- Networking
- Image.network
- Load Image
- HTTP
- AppBar
- Hello World
- Scaffold
- navigator
- 반석천
- ListView.builder
- listview
- Flutter 예제
- InkWell
- ListTile
- Flutter Tutorial
- MainAxisAlignment
- CrossAxisAlignment
- Column Widget
- Row
- Flutter Example
- sqlite
- Flutter 앱 배포
- Row Widget
- Snackbar
- WillPopScope
Archives
- Today
- Total
꿈꾸는 시스템 디자이너
Flutter와 Arduino간 한글이 포함된 시리얼 통신 방법(base64, utf-8) 본문
시리얼 통신에서는 한글 데이터를 송수신 할 수 없다.
시리얼 통신에서는 문자당 1바이트를 할당하는 아스키방식이 사용되는데 한글은 문자당 2바이트를 사용하기 때문에 아스키코드 방식을 이용할 수 없기 때문이다.
몇가지 해결방식이 있지만, Flutter 앱과 Arduino간에 한글 데이터의 교환이 필요한 경우에는 utf-8과 base64 인코딩/디코딩 방식을 이용하면 해결할 수 있다.
Flutter에서 한글이 포함된 String을 인코딩/디코딩하는 방법은 다음과 같다.
import 'dart:convert';
// 인코딩
String korean = base64.encode(utf8.encode("한글데이터"));
// 디코딩
utf8.decode(base64.decode(korean));
인코딩한 문자열을 BLE나 WIFI 통신을 통해 아두이노로 전송하고, 반대로 수신한 문자열을 반대로 디코딩을 하면 복원할 수 있다.
다만 아두이노 자체가 기본적으로 아스키코드만을 지원하기 때문에 아두이노측에서 수신된 한글 데이터를 바로 이용하는 것은 불가능하다고 한다.
임의의 라이브러리 주입을 통해 아두이노 IDE의 시리얼 모니터에 출력되는 데이터의 한글을 정상출력되도록 할 수는 있다.
'Development > Flutter' 카테고리의 다른 글
Comments