일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Unity
- Class
- Pointer
- java
- public
- stream
- Android
- sensor
- digitalRead
- compare
- wpf
- mfc
- parameter
- inheritance
- aduino
- flutter
- Contour
- memory
- Binary
- length
- UNO
- Barcode
- Overloading
- file access
- atmega328
- Read
- preprocessing
- Encapusulation
- APP
- SERIAL
- Today
- Total
목록분류 전체보기 (287)
폴크(FOLC)
# 일반적으로 프로세스간의 데이터를 공유하는 방법 -> IPC : Inter-Process Communication - 윈도우 메시지 전달 방법 - TCP/IP 통신 이용 방법 - 공유 메모리 이용 방법 - 공유 파일 이용 방법 - 등등 # 2개의 PC에서 특정한 데이터를 공유 하고자 하는 경우에 이용한다. -> 공유 파일 이용 방법 -> CFile 클래스 이용 # 소스 코드 struct SHAREDFILEDATA { int AAA; int BBB; }; - 데이터 변경 CString strFileName = _T("D:\\SharedMemFile.XXX"); CFile *pFileMem = new CFile; if (pFileMem) { if (pFileMem->Open(strFileName, CFil..
# 일반적으로 프로세스간의 데이터를 공유하는 방법 -> IPC : Inter-Process Communication - 윈도우 메시지 전달 방법 - TCP/IP 통신 이용 방법 - 공유 메모리 이용 방법 - 공유 파일 이용 방법 - 등등 # 2개의 서로 다른 프로세스에서 특정한 데이터를 공유 하고자 하는 경우에 이용한다. -> 공유 메모리 이용 방법 -> WinAPI ( CreateFileMapping[생성], OpenFileMapping[연결], UnmapViewOfFile[해제] ) 함수를 이용 # 소스 코드 #define SHARED_MEM_NAME _T("shared_mem_test") struct SHAREDMEMDATA { int AAA; int BBB; }; - 생성 m_hHandle = C..
# 일반적으로 프로세스간의 데이터를 공유하는 방법 -> IPC : Inter-Process Communication - 윈도우 메시지 전달 방법 - TCP/IP 통신 이용 방법 - 공유 메모리 이용 방법 - 공유 파일 이용 방법 - 등등 # 2개의 서로 다른 프로세스에서 특정한 데이터를 공유 하고자 하는 경우에 이용한다. -> 윈도우 메시지 전달 방법 -> WM_COPYDATA 구조체를 이용 # 소스 코드 HWND process = ::FindWindow(NULL, _T("XXXXXX")); // 찾는 process 이름 if (process != NULL) { CString Value = _T("1"); // 전송하는 데이터 값 COPYDATASTRUCT data; data.dwData = 0x9999..
# 알림 추가 > "디자이너-알림"을 Drag & Drop 하면 화면에 1개의 알림이 추가 된다. # 알림 연동 > 블록 화면으로 전환하고 "알림1" 클릭하여 EVENT 를 연결한다. > 특정 메시지를 표시하고 "확인/취소"를 진행하기 위해서는 "알림1"을 선택하고 이하 Function 을 이용한다. > 알림이나 확인창으로 이용 가능하다.
# Screen1 에서 생성된 데이터를 ScreenX~ 로 연동하는 방법 > 전달하기 원하는 데이터를 생성하고 "변수-가져오기" 를 연결 한다. # 데이터의 값이 여러개인 경우에는 > 리스트를 이용하여 생성하고 "변수-가져오기" 를 연결 한다. # 데이터를 받기 위해서는 해당 Screen 에서 초기화 되는 과정에서 데이터 연동 > 전달 받기 위한 데이터의 갯수에 맞는 변수를 할당 해 놓기 > 그리고 "제어-시작 값 가져오기" 로 변수에 할당한다. > 앞에서 전달하는 변수의 크기와 공간이 동일한 상태로 "시작 값 가져오기"하면 동일한 데이터를 그래도 받아 들인다.
# 디자이너에서 설계한 화면에 배치되어 있는 컨트롤들을 이용해서 구체적인 기능을 구현 > 화면 우측에 "블록" 버튼을 누르면 선택되어 있는 화면(Screen1)에 대해서 기능을 작성한다. # 변수 > 지역 변수 : 함수 안에서 생성/삭제 되고 가변적으로 값을 관리 하는 공간 > 전역 변수 : 화면 안에서 생성/삭제 되고 가변적으로 값을 관리 하는 공간 > 변수의 사용범위를 고려해서 생성한다. ( 대형 프로젝트가 아닌 경우에는 전역 변수로 관리 해도 무방한 듯 ) # 전역 변수 생성 > "변수 - 전역변수 만들기" 화면에 Drag & Drop ( 초기값은 0으로 자동 설정되지만 되도록이면 값을 할당 하도록 한다. ) > "수학 - 0" 화면에 Drag & Drop 하는데 "전역변수 만들기 초기값" 옆에 붙..
# 사용자 인터페이스 > 각 컨트롤 마다 이벤트를 속성에서 설정이 가능하며 Drag & Drop 으로 "디자이너"에서 화면에 위치시킬 수 있다. - 버튼 : 누르는 Event 를 발생, 체크박스/스위치 : 선택 Event 를 발생, 이미지 : 그림 표시, 레이블 : 글자 표시 - 알림 : 확인/취소 설정 Event 발생, 슬라이더 : 상태 조절, 텍스트 박스 : 글자 입/출력 # 레이아웃 > 화면에 특별한 위치에 또는 규칙을 적용해서 배치할 수 있도록 도와준다. - 수평 배치 : 가로로 컨트롤 배치, 수직 배치 : 세로로 컨트롤 배치 - 스크롤가능 : 좌/우/상/하 스크롤링 가능 - 표형식배치 : 격자 모양으로 컨트롤 배치 # 미디어 > "디자이너"에서 Drag & Drop 하면 화면 하단에 추가 되고 ..
# https://appinventor.mit.edu/ 접속 > Create Apps! 클릭 # 튜토리얼은 SKIP > CLOSE 클릭 # 새 프로젝트 시작하기 > 프로젝트 이름을 입력하고 확인 > 자동으로 화면전환 # Screen1 : 최상위 화면 # 스크린 추가 : Screen2 ~ 이상으로 화면을 추가 가능 # 디자이너 : 뷰어에 보이는 화면에 그림 그리듯이 Controls 을 끌어놓는 형태를 제공하는 공간 # 블록 : 현재 화면에서 뷰어에 끌어 놓은 Controls 에게 기능을 부여하는 공간 # 사용자 인터페이스 : App 에서 이용가능한 Controls # 뷰어 : 휴대폰에 보여지는 형태를 가상으로 표현 시켜줌 ( 휴대폰과 다를 수 있음 ) # 컴포넌트 : App 에 표시되는 화면에서 이용하는 ..
# 구글이 제작하고 MIT 에서 관리 > 2010년 12월 15일에 공식 출시 이후, 2011년 후반기에 구글은 소스 코드를 공개하고 서버를 종료 > 2012년 3월에 MIT 다시 서비스를 OPEN 하고 2013년 12월 6일에 앱 인벤터 2로 변경하여 운영 - https://appinventor.mit.edu/ # 프로그래밍에 관심이 있는 사람들이 쉽게 응용 소프트웨어(안드로이드 운영 체제용)를 만들 수 있게 도와준다. > 사용자들이 코드 블럭을 끌어당기거나 붙여서 실행할 응용 프로그램 제작 > 프로젝트를 추출하면 *.aia 형식의 파일로 제공 # 서비스 이용 방법 ( 권장 사항 ) > Chorme 브라우저에서 appinventor 사이트 접속 > Google 계정으로 LogIN 하고 이용 약관 동의 ..
# 전기전자기술자협회에서 IEEE 802.15.1로 표준 -> 블루투스 SIG 에서 관리하고 있다. -> 1998년도에 wire 형태의 통신(시리얼)을 wireless 형태로 변경하는데 목적을 두고 출발 v1.0 -> 2004년도에 속도를 증가시간 v2.0 이 발표되었고 audio 전송(스트리밍)도 가능 -> 2009년도에 v3.0 으로 페어링 문제를 해결이 되면서 무선 통신 장치의 호환성 해결 -> 2013년도에 v4.0 이 발표되면서 저전력의 BLE 통신이 가능 # 종류 -> 블루투스 클래식 : 하위 버전 호환 가능, 빠른 속도, 넓은 데역폭(오디오 스트리밍) -> 블루투스 스마트 : 저전력 소비(배터리로 동작), 좁은 대역폭(간헐적인 데이터 송/수신) # 통신 -> 통신 프로토콜인 프로파일 형태로 ..
# 모토로라에서 전이중 방식으로 개발한 시리얼 통신의 표준 -> 마스터 장치와 슬레이브 장치간의 양방향 통신을 동시에 수행 -> 데이터를 클록신호에 맞추어 전송 [ 상승/하강 엣지 ] -> 4개의 연결선 필요 [ MOSI, MISO, SCLK, SS ] -> 4개의 통신 모드 이용 가능 # 통신 방법 -> 마스터 장치와 여러개의 슬레이브 장치간의 선을 공유 -> 클록 신호를 기준으로 통신을 진행한다. -> 슬레이브는 LOW 상태에 통신 가능 -> 양방향 통신 : 마스터 요청/응답 슬레이브 # 연동 -> 통신하고자 하는 슬레이브의 연결선(SS) 에 LOW 로 설정 -> 슬레이브 장치가 지원하는 통신 속도 이하로 클록 신호 전송 -> 각 클록 사이클마다 MOSI 연결선을 통해 1BIT 데이터 전송 -> MI..
# I2C protocol -> 필립스 반도체에서 개발한 저속 통신 프로토콜 -> 2선 통신 방식 ( clock-SCL 과 data-SDA 를 각각 전달하기 위한 선 필요 ) -> 직접회로 간의 데이터를 공유 # I2C 방법 -> 마스터 장치와 여러개의 슬레이브 장치간의 선을 공유 -> 마스터만 통신을 시작할 수 있다. -> 슬레이브는 고유의 주소(ID 번호)가 부여된다. -> 마스터가 통신을 관리한다. ( 마스터 -> 요청, 응답 마스터 장치는 시작 비트를 전송 -> 마스터 장치가 슬레이브 장치의 주소를 전송 -> 마스터 장치는 데이터의 상태(읽기, 쓰기) 비트를 전송 -> 슬레이브 장치는 마스터 장치의 요청에 응답 ( ACK ) -> 마스터 장치에서 데이터 전송 -> 슬레이브 장치는 마스터 장치에 응..
# 시리얼 포트 -> 9핀의 시리얼 케이블로 연결할 수 있는 포트 -> 대부분 USB 포트로 대체되었지만 USB to DB9 시리얼 포트 변환 어댑터가 있음. -> 시리얼 통신을 위해서 2개 핀( Tx, Rx )을 이용 # 아두이노 우노 -> 시리얼 인터페이스 프로그램을 이용 ( USB to Serial 변환칩 Atmega16U2 ) -> 시리얼과 USB 는 호환되지 않아서 통신은 할 수 없다. # 데이터 연동 -> 시리얼 모니터 이용 ( IDE 설치 과정에서 자동으로 설치 됨 ) -> Serial 기능을 선언하고 begin(통신 속도), print() 등의 명령어 함수를 이용 -> available() 명령어 함수를 이용해서 수신 버퍼에 있는 데이터(byte)의 수를 확인 -> read() 명령어 함수..
# ADC ( Analog to digital converter ) -> 연속적인 아날로그 전압을 이산적인 디지털 값으로 바꾸는 역할 -> 해상도가 높을 수록 디지털로 표현할 수 있는 값의 종류가 많아지고 정확해 진다. -> 8bit ( 256 ), 10bit ( 1024 ), 12bit ( 4096 ) 등의 해상도를 갖는 제품이 있다. # 정확도는 해상도에 의해 결정 -> 아날로그 값을 디지털 값으로 변환하기 위해 10bit 해상도의 ADC를 이용 - 10bit 해상도 : ADC 가 아날로그 신호를 2^10 개의 서로 다른 값으로 구분 가능 - 다시 말해, 입력되는 모든 값을 0 ~ 1023 사이의 값 ( 1024개 )중에 하나를 표시 # 기준 전압 관련 -> 해당 디지털 값 ( 입력할 수 있는 최대 ..
# 재단(영국)에서 만든 초소형/초저가의 교육용 프로젝트 일환의 컴퓨터로 2012년에 첫 출시 되었다. -> 임베디드 리눅스 기반 개발 보드 -> 가격대비 성능이 월등히 높아 엄청난 파장을 일으킴 -> 재단은 개발만 담당하며 제조는 OEM 방식으로 생산 ( 영국, 일본, 중국 ) # 리눅스 커널 기반(데비안) 운영 체제(Raspbian)를 사용을 권장한다. 최근에는 RaspberryPiOS 로 이름을 변경하였다. -> 3D : OpenMAX, OpenGL ES를 사용 -> 2D : OpenVG -> EGL을 사용 # 개발 가능 언어 -> Python : Thonny/Eclipse 를 이용해서 개발 환경 구성 -> C/C++ : cc, gcc 컴파일러를 이용해서 개발 환경 구성 # 스팩 관련 내용 -> 참..
# 디지털 데이터를 획득하여 상호 작용을 하기 위한 수단(버튼이나 스위치)으로 이용 -> 입력 핀의 "디폴트 상태"를 결정하기 위해서 풀업/풀다운 # 풀업/풀다운 저항의 필요성 -> 아두이노 PIN 과 스위치를 연결하고 5V 를 인가하면 HIGH 로 입력 될 것이지만, 풀다운 저항을 이용하지 않고 스위치를 아두이노 PIN 에서 연결 해제 하면 0V or 5V 도 아닌 상태 ( floating ) 가 되어 주변에 있는 PIN 상태 값에 영향을 받게 되고 결국 HIGH or LOW 를 번갈아 가면서 입력이 될 수 있다. # 버튼 상태 확인 하기 -> 스위치 바운싱을 해결하기 위해서 디바운싱 기법을 소프트웨어로 처리 - 브레이드보드에 장착된 상태의 이상 동작으로 5V 0V 를 왔다 갔다 - 버튼의 스프링에 의..
# MCU 을 제어하기 위해서 이용되는 IDE 를 설치 한다. 보통 2가지 ( Avr Studio, WinAvr ) 중에 선택 -> Avr Studio 로 선택 # 사이트 접속 -> avr studio 검색 -> microships.com 으로 # Download Microchip Studio 를 선택 ON / Offline 모듈 선택 -> 파일 다운로드 # 설치 시작 -> 기본적으로 NEXT 선택 -> 중간 중간에 표시되는 PAGE 에서도 NEXT 를 선택 -> Visual Studio 가 설치되어 있다면 Shell (Isolated) 형태의 plug in 자동 설치 됨. -> 추가적으로 신뢰성 메시지에 "설치" 선택 # 설치 완료 # 샘플 프로그램 컴파일 -> 기본 코드 자동 생성
# Atmel 사의 8bit RISC 마이크로컨트롤러 ( Micro Controller Unit ) 의 한 종류이다. -> MCU : Micro processor + Memory(ROM, RAM) + I/O 를 통합한 형태로, 특별한 동작을 수행할 수 있도록 프로그래밍(제어가)이 가능하다. -> MCU 종류에는 크게 3가지 형태(AVR-atmel, 8051-intel, PIC-microchip )가 있다. # 스팩 -> 128KB flash, 4KB sram, 4KB eeprom -> JTAG interface, 10bit ADC, USART 2ch, TWI 1ch, SPI 1ch -> I/O 53 pins -> clock cristal 1ea # PIN MAP -> PA ~ PG 까지 총 7개 Port..
# 접근 제어자 > 정보의 은닉을 위해서 이용, 최소한의 정보만으로 클래스를 운용 > 총 4가지 ( private, public, protected, default ) - private : 클래스 멤버는 외부로 공개되지 않음. ( 외부 접근 불가 ) - public : 클래스 멤버는 외부로 공개 됨 ( 외부 접근 가능 ) - protected : 상속받은 클래스 멤버는 접근 가능, 같은 패키지 접근 가능 ( 외부 접근 불가 ) - default : 같은 패키지에 속하는 멤버에서만 접근 가능 ( 기본값 ) > 접근 범위 - public > protected > default > private 순서 # 기타 제어자 > 특징 - 클래스에 final 과 abstract 를 같이 쓸 수 없다. - 메소드에 sta..
# 정적 멤버 ( static ) > 클래스에 존재하지만 객체별로 생성하지 않고 객체들이 공유하는 멤버 > 1개만 관리 > 접근 가능 ( 클래스 멤버 함수 / 프렌드 ) > 모두 접근 가능 ( 정적 멤버를 public 으로 처리 ) > 초기화는 클래스명::정적멤버 # 정적 멤버 함수 > 객체를 생성하지 않고도 클래스 명으로 호출 가능 ( 클래스명.정적멤버함수 ) > 객체를 생성하지 않으므로 this 포인터가 없다. > 정적 멤버 변수만 사용 가능 # 상수 멤버 ( const ) > 한 번 초기화 하면 그 값을 변경하지 못하는 변수 > const 키워드 이용 ( 처음에 ) > 클래스 전체에서 이용하는 중요한 상수 # 상수 멤버 함수 > 호출된 객체의 데이터를 변경할 수 없는 함수 > const 키워드 이용..