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 | 31 |
Tags
- Hello World
- 반석천
- Networking
- Flutter 예제
- Row Widget
- flutter
- Flutter 앱 배포
- listview
- Snackbar
- Scaffold
- ListView.builder
- Row
- Column Widget
- sqlite
- CrossAxisAlignment
- AppBar
- node.js
- Flutter 강좌
- ListTile
- Load Image
- Image.network
- HTTP
- InkWell
- navigator
- MainAxisAlignment
- FutureBuilder
- Cached Image
- WillPopScope
- Flutter Tutorial
- Flutter Example
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