반응형

프로그래밍 127

[Android] EditView에서 IP Address 입력 정규화 처리

자주 사용하는 EditView에서 정규화와 filter를 이용한 입력처리를 보여주고자 한다. 먼저 EditView에서 우리는 숫자와 점 밖에 안쓰기 때문에 숫자 키보드를 나오게 하고 다른 키 입력을 못하게 막도록 다음과 같이 선언한다. android:inputType="phone" android:digits="1234567890." 이제 MainActivity단에서 onCreate단에 아래와 같이 선언해준다. val filters = arrayOfNulls(1) filters[0] = InputFilter { source, start, end, dest, dstart, dend -> if (end > start) { val destTxt = dest.toString() val resultingTxt = ..

[Android] RecyclerView 사용하기

먼저 RecyclerView의 장점들을 설명하고 싶으나, 정말 많은 블로그에서 설명하고 있음으로 패스. 빠르게 구현하는 방법에 대해 배워보겠다. 일단 RecyclerView에 사용할 SubitemView를 만들어보겠다. layout/recycler_factory_item.xml 을 생성한다. 이제 activity_main,xml에 위에서 만든 layout을 이용하여 recyclerView를 선언해주자. RecyclerView에 표현할 내용은 공장 정보와 그에 해당하는 IP 정보임으로 이를 위한 data class를 선언해주겠다. data class Factory ( var Name: String, var Ip: String = "" ) RecyclerView를 사용하려면 Adapter를 우리가 구현해줘야..

[Android] Wifi로 Android Device 연결하여 개발하기

오늘 오전... 드디어 USB-C 케이블이 맛탱이가 가버렸습니다. 전선의 방향에 따라 연결이 되었다가 안되었다가를 반복하여 개발하다가 집어 던절뻔 하였는데 Debug를 사용하여 개발하려다보니 케이블을 붙잡고 하기 너무 어려워서 WiFi로 디버깅은 못하나 해서 찾아봤더니 이와 관련된 플러그인이 존재했습니다. Android Studio에서 File -> Settings Plugins 선택 Android WiFi ADB 설치 재시작후 다시 Android Studio를 켜보면 좌측에 Android WiFi ADB라는 탭이 생겼습니다. 클릭합시다. 이제 PC 혹은 노트북을 WiFi와 연결하고 개발할 스마트폰도 동일한 WiFi에 연결합시다. 그뒤 핸드폰을 PC에 연결하면 아래와 같은 내용이 나옵니다. 지금은 Sta..

[Android] Ndef 읽기 쓰기

이번에는 NFC를 이용하여 Ndef Message를 NFC에 읽고 쓰는 방법에 대해 알아봅시다. 일단 안드로이드에서 Empty Project를 하나 생성합니다. AndroidManifest.xml 을 열고 위쪽에 다음과 같은 내용을 넣습니다. 문법의 설명처럼 NFC의 권한을 넣고, 하드웨어에서 NFC 기능이 필요하다 라고 명시해 놓은겁니다. package com.antoine.ndef import android.app.PendingIntent import android.content.Intent import android.nfc.NdefMessage import android.nfc.NdefRecord import android.nfc.NfcAdapter import android.nfc.Tag impo..

[IoT] WiFi Max RSSI인 SSID 얻기

esp32를 사용하여 Wifi를 연결할 때, 첫 번째로 가장 중요한 요소는 Wifi와의 연결 강도가 될 수 있습니다. 기껏 esp32를 통해 간단한 웹서버를 만들거나 mqtt를 사용한다거나 카메라 화면등을 가져오는데 Wifi의 연결때문에 신호가 끊어져서 데이터를 읽는 경우가 많습니다. 아래의 코드는 현재 ESP32가 연결 가능한 Wifi들을 수집하여 RSSI가 가장 좋은 SSID를 얻는 방법입니다. int numSsid = WiFi.scanNetworks(); if(numSsid < 0) numSsid = 0; if (numSsid == -1) { INFO("Couldn't get a wifi connection"); while (true); } // print the list of networks se..

프로그래밍/IoT 2020.09.14

[Arduino] Serial Log 관리

Arduino를 개발할 때, 우린 주로 Jtag를 사용하는 경우를 제외하곤 대부분 디버깅을 Serial port를 이용하여 디버깅을 합니다. 그런데 로그도 일반 앱처럼 Info, Warn, Debug, Error 단위로 관리는 하지 않죠. 이를 위한 방법으로 아래와 같이 사용하면 편합니다. 원하는 Log level까지만 표기하도록 전처리기로 선언하여 사용하면 관리가 쉽습니다. #pragma once #include #include // Change _LOGLEVEL_ to set tracing and logging verbosity // 0: DISABLED: no logging // 1: ERROR: errors // 2: WARN: errors and warnings // 3: INFO: errors..

프로그래밍/IoT 2020.09.14

Modbus RTU 구현

과거 Modbus 통신으로 설비 데이터를 수집하는 서브 프로젝트를 맡은 적이 있다. 그당시 nuget에 올라와 있는 modbus 통신 라이브러리를 사용하려고하니 이상하게 동작이 안되는 것들이 많았다. 어차피 시리얼 통신이고 데이터 리딩하는것에 남의 라이브러리 가져다 쓰느니 내가 가볍게 만들어서 쓰는게 좋겠다 싶어서 제작하였다. 코드에는 Write부분이 없긴한데 사실 Write하는 부분도 상당히 간단하기 때문에 Read구문과 비슷하게 코딩하면 될듯. 다른 사람을 위해 올립니다. 적당히 수정하여 사용하시면 될것같습니다. 귀찮음이 많이 보이는 코드지만 특별하게 문제가 없는 코드임으로 잘 사용하시길 바랍니다. using System; using System.Collections.Generic; using Sys..

프로그래밍/C# 2020.09.14

[IoT] esp32 Flash Download Tools 이용하여 업로드

우리가 VS Code에 PlatformIO Plugin을 이용하여 개발을 하는 경우, esp32에 프로그램을 업로드 하려면 vs code를 이용하여 업로드 하는 방법밖에 없다. 하지만 소스코드를 매번 컴파일 하며 업로드를 하는 것은 시간 낭비이며, 업체에 소스코드를 넘겨서 생산하는것은 더더욱 무리다. 때문에 .bin파일을 이용하여 esp32에 프로그램을 업로드 하는 방법을 소개하고자 한다. 먼저 해당 프로젝트를 열고 터미널을 연다. pio run -v -t upload 위의 코드를 입력하면 기존에 업로드 할때 나왔던 정보가 아닌 디테일한 정보들이 나온다. 이러한 정보 중 다음과 같은 데이터를 이용한다. 대충 이러한 정보인데 텍스트를 이쁘게 풀어서 써보자면 아래와 같다. "c:\users\jade4375\..

프로그래밍/IoT 2020.09.14

[Arduino] Button Control

우리가 Arduino나 마이크로 프로세서 등을 사용할 때 I/O를 이용하는 가장 기본적으로 예는 바로 버튼일 것이다. 이같은 회로를 바로 사용하면 채터링(Chattering) 현상이 발생하게 되는데 시그널로 확인해본다면 아래와 같다. 채터링 현상이 일어나는동안 SW적으로 데이터를 읽으면 1도 아니고 0도 아닌 이상한 상태가 되어 의도하지 않은 값을 읽어올수 있다. 이와 같은 상황을 해결하기 위해서 Debouncing이라는 기법을 이용하여 해결한다. 쉽게 설명하여 버튼 입력이 일어나는 동안 Debouncing Time만큼 입력을 무시하면 된다. 그리고 또한 실제 개발 환경에서는 이러한 버튼들에 대해 많은 I/O를 할당 하기 어려운 경우들이 대부분이다. 그러면 적은 수의 버튼을 이용하여 셋팅이나 조작을 해야..

프로그래밍/IoT 2020.09.14
반응형