본문 바로가기
C++ serial timeout 해결, MFC 시리얼 read write 통신 공통 C++ serial timeout 해결, MFC 시리얼 read write 통신 공통 Serial timeout통신 제어 C++ 프로그램은 상대 장치의 상태에 따라 통신이 도중에 끊어질 수 있다. 만약 100바이트가 올것이 데이터 수신 중에 송신 쪽의 문제로 80바이트만 송신한 경우 수신을 도중에 멈추고 알람을 표시할 필요가 있다. 타이머는 이런 목적으로 사용한다. (serial timeout 제어) ■ 시리얼 통신 타이머의 설정 (serial timeout set)SetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts)를 사용하고 ■ 설정된 데이터를 읽을 때GetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTi.. 2017. 2. 20.
Crypto 암호화 알고리즘 로그인 폼, WinCE MFC 다이얼로그 [MFC 다이얼로그] 암호화 로그인 폼 (WinCE Crypto 화면 예제) [MFC 다이얼로그 예제] 테스트 장비 컴파일 테크놀로지 - CWV-070BR WinCE 터치패널PC [클릭] ■ 로그인 폼, 스크린 샷레지스트에 User1, User2의 암호화 알고리즘인 적용된 비밀번호가 저장됩니다. 아래처럼 평문이 아닌 특수문자가 보입니다. (실제로 ㅁㅁㅁㅁㅁ로 Crypto 암호화된 건 아님) 암호화 알고리즘 적용한 비밀번호를 프로그램이 이용합니다. 프로그램은 WinCE MFC 다이얼로그 기반입니다. 암호화 로그인 폼 주요 소스 확인 / 다운로드 WinCE 기반 암호화 프로젝트 - 레지스트와 암호화 알고리즘 구현을 위해선 아래 두 개의 헤더 파일을 인클루드합니다. 12#include #include cs 프.. 2017. 2. 20.
Qt Creator, class' will be initialized after [-Wreorder] variable [Qt Creator 경고 강좌] class' will be initialized after [-Wreorder] variable 경고 메세지 'class' will be initialized after [-Wreorder] variable C++에서도 전역, 멤버 등의 변수를 사용자가 실수로 놓칠까 봐, 또는 미묘한, 확인하기 힘든(subtle) 에러가 발생할 소지를 줄이기 위해 초기화 코드와 리스트에 차이가 발생하면 경고를 띄웠었습니다. 그런 이유로 아래 코드를 빌드하면 아래 아래처럼 경고가 뜹니다. 변수 초기화 순서가 원인입니다. 3번째에 초기화될 것은 double형 변수 d지만, 실제론 int형 i가 초기화 돼버려 경고가 뜹니다. 초기화 리스트에는 : i -> f -> d -> b의 순입니다.실제.. 2017. 2. 19.
닷넷프레임워크 하위 호환성 (.net framework 상위 최신 버전 설치) 닷넷프레임워크 하위 호환성 (.net framework 상위 최신 버전 설치) 출처 1 - Mailbag: Do I need still need older versions of the .NET Framework [클릭]출처 2 - on my system after installing the .NET Framework 4? [클릭] Microsoft .NET Framework 1.1Microsoft .NET Framework 2.0 SP2Microsoft .NET Framework 3.0 SP2Microsoft .NET Framework 3.5 SP1Microsoft .NET Framework 4 Client ProfileMicrosoft .NET Framework 4 Extended 가령, 위와 같은 닷.. 2017. 2. 19.
Qt 모니터 해상도 및 크기 얻기 (레이아웃 스크린 사이즈) Qt 모니터 해상도 및 크기 얻기 (레이아웃 스크린 사이즈) 참고 - Get physical screen size in Qt [클릭] Qt 모니터 이용 - 헤더 파일 1234567891011121314151617181920212223242526272829#ifndef WINDOW_H#define WINDOW_H #include class Window : public QWidget{ Q_OBJECT public: QWidget *canvas; QSlider *slider; QPixmap pixmap; private: qreal zoom; qreal pixels; qreal px_width; qreal px_height; qreal mm_width; qreal mm_height; public: Window(.. 2017. 2. 18.
QR코드란, QR코드 원리 및 정의 (안드로이드 큐알 코드) QR코드란, QR코드 원리 및 정의 (안드로이드 큐알 코드) 큐알코드(QR code)는 흑백 격자 무늬 패턴으로 정보를 나타내는 매트릭스 형식의 이차원 바코드이다. QR코드란 주로 일본, 한국, 영국, 미국등에서 많이 사용되며 명칭은 덴소 웨이브의 등록상표 Quick Response에서 유래하였다. 큐알코드는 종래에 많이 쓰이던 바코드의 용량 제한을 극복하고 그 형식과 내용을 확장한 2차원의 바코드로 종횡의 정보를 가져서 숫자 외에 문자의 데이터를 저장할 수 있다. 보통 디지털 카메라나 전용 스캐너로 읽어들여 활용한다. QR코드 원리기존의 바코드는 기본적으로 가로 배열에 최대 20여 자의 숫자 정보만 넣을 수 있는 1차원적 구성이지만, QR코드 원리는 가로, 세로를 활용하는 2차원적 구성이다. 숫자 최대.. 2017. 2. 18.
Atmega128 입출력 포트(I/O port) 설정 실수 = 파형으로 발견 Atmega128 입출력 포트(I/O port) 설정 실수 = 파형으로 발견 I/O 입출력 포트의 출력이 이상한 파형을 보이는 예와 그 원인을 트러블의 일례로서 소개한다. 이는 필자가 특정 시스템을 개발할 때 직면했던 케이스이다. 원인은 단순한데, 그림 A와 같이 Atmega128 로직 IC라고는 생각할 수 없는 이상한 파형을 보고 '이것은 뭐야?"라고 생각했다. '이거 뭐야?' 출력하고자 했는데 입력으로, 게다가 내부 풀업이 ON되어 있었다. 개발에 사용한 마이크로컴퓨터는 ATmega328P이다.목적은 입출력 포트BH의 비트 3~비트 1(PB3~PB1)을 출력 포트로 하여 토글시키는 것이었다.그래서 초기 설정으로서 다음과 같은 코드를 썼다. 위의 코드로 PB3~PB1을 출력(원래라면 DDRB = 0x0.. 2017. 2. 17.
시리얼 통신 포트 에러, 타임아웃, 속도 저하 (USB to Serial) 시리얼 통신 포트 에러, 타임아웃, 속도 저하 (USB to Serial) 너무 느린 속도로 원활한 시리얼 통신 불가능 에러프로그램이 무한 대기에 빠져드는 에러 발생 USB to Serial 속도 저하 문제(또는 타임아웃)가 코드 수정으로도 해결되지 않는다면 아래와 같이 포트의 속성을 변경해 보세요. 기본 하드웨어 설정 사항을 소프트웨어에서 무시하는 경우도 있습니다.반대로, 소스 코드에서 Baud Rate (보레이트) 설정했지만, 하드웨어에서 요청 사항을 무시하는 경우가 있어요. 사용자 입장에선 그런 특수한 상황을 일일이 알아차리긴 힘듭니다. 그래서 일단 시도는 해봐야 되죠. 이 포스트는 바로 그런 상황을 설명코자 합니다. 우선, 아래 그림에서 "Advanced..."를 누릅니다. 송수신 바이트 크기를 .. 2017. 2. 17.
HIOKI 3803 멀티미터 SIBA 퓨즈 고장 후 교체 (히오키 계측기) HIOKI 3803 멀티미터 SIBA 퓨즈 고장 후 교체 (히오키 계측기) 대한민국에서 보편적으로 널리 이용되는 HIOKI 3803 테스터기의 퓨즈를 교체하는 방법입니다. 퓨즈의 수명이 워낙에 길다 보니 테스터기를 고장 내지 않는 이상에야 퓨즈를 직접 교체하는 일이 거의 없습니다. 이 포스트를 남기는 저는 ... 물론 히오키 테스터기를 잘못 다뤄 퓨즈를 날려버렸습니다 ... 지도 교수님 앞에서 날렸죠 ... 잘 날아가더라고요 ... 잘 ... 아주 잘 ... ㅡㅡ;; 그때는 참 하늘이 맑은 날이었어요.선선한 봄바람처럼 따뜻한 바람도 불었고요.하지만, 교수님 앞에서 불똥을 튀기는 이 녀석 때문에 저는 참 곤란했었답니다. 봄바람 대신 교수님 콧바람이 더 세게 느껴졌으니깐요. 아무튼, HIOKI 3803(멀티.. 2017. 2. 16.
ARM 프로세서 코어 이름 읽는 방법, (ex ARM940T) ARM 프로세서 이름 특징 이해하기, 코어 명명법 { }안의 알파벳에 따라 ARM 프로세서 의미가 달라집니다. 아래부터 살펴보세요. ARM {x}{y}{z} {{T}{D}{M}{I} {E}{J}{F}{-S}}■ 읽는 방법ARM {x}{y}{z} {{T}{D}{M}{I} {E}{J}{F}{-S}} x - 제품군 (ex ARM7/9/10/11)y - MMU/MPUz - 캐시 ARM {x}{y}{z} {{T}{D}{M}{I} {E}{J}{F}{-S}} T - Thumb 16비트 디코더D - JTAG 디버그M - 고속 곱셈기I - EmbeddedICE macrocell (더비그 하드웨어 장치) ARM {x}{y}{z} {{T}{D}{M}{I} {E}{J}{F}{-S}} E - DSP 확장 명령어J - Jazel.. 2017. 2. 16.
[Atmega128 강좌] 그래픽 LCD 제어 방법 (ezLCM QV24) [Atmega128 강좌] 그래픽 LCD 제어 방법 (ezLCM QV24) ezLCM QV24 Touch3 제품에 대해서 그래픽 LCD 소개 글 - ezLCM QV24-Touch3(제조사, ezCircuits) [링크]그래픽 LCD와 연동될 PCB - Atmega128_RS232[링크] 그래픽 LCD 회로도 (glcd) (홈페이지에서 발췌)QV24-Touch3 LCD module 특징 :- 18bits CPU interface LCD를 사용.- 최대 26만 color 표현 가능.- TSC2003 터치스크린 컨트롤러 내장.- 8bits -> 18bits 확장 포트 채용.- 간편해진 5V/3V Interface 전환. 일단 그래픽 LCD의 회로도를 살펴보겠습니다. 회로도를 살펴보면 꽂아야 할 핀이 15개라는.. 2017. 2. 15.
[MFC 기초 강좌] C++ 프로그래머 11개 코딩 프로그래밍 팁 [MFC 기초 강좌] C++ 프로그래머 11개 코딩 프로그래밍 팁 1. Parameter Default 1234int parameterDef(int nNum = 5){ return nNum;}cs 위와 같은 함수가 있을 때, parameterDef()와 parameterDef(5)는 같은 의미. 2. 메모리 공간 영역 코드 영역 - 사용자가 코딩한 내용이 저장데이터 영역 - 프로그램 종료 이전까지 지워지지 않을 데이터가 저장스택 영역 - 매개변수, 지역변수 등 유동적인 변화가 발생한 것들을 다루는 영역힙 영역 - 원하는 시점에 메모리를 할당/해제할 수 있는 영역 3. Const 함수에서도 const를 사용해서 참조자를 보다 완벽하게 사용할 수 있습니다. 12345int RefFunc(const int &.. 2017. 2. 15.