Ui 창에서 Qt 모달 다이얼로그 (modal dialog) 하나를 띄웁니다. 속성은 당연히 QDialog 입니다. 아래 그림처럼 Dialog를 새로 생성해야 합니다. 아래 그림은 qt 프로젝트에서 버튼이 없는 형태로 생성한 것입니다. 하지만, 다른 분들은 버튼이 있고 없고 크게 신경 안 쓰셔도 됩니다. 그저 다이얼로그만 생성하면 돼요. 아래는 Qt 모달 다이얼로그 띄우기 소스. #ifndef DLGCONFIG_H#define DLGCONFIG_H #include #include "ui_dlg_config.h" class DlgConfig : public QDialog{public: DlgConfig(QWidget *parent = 0); virtual ~DlgConfig(); private: Ui::u..
외부 단편화와 버디 시스템 (external fragmentation)커널은 연속적인 페이지 프레임 그룹을 할당하는 견고하고 효율적인 정책을 세워야 한다. 이때 메모리 관리와 관련한 유명한 문제인 '버디 시스템 알고리즘 외부 단편화(buddy system external fragmentation)'를 해결해야 한다. 외부 단편화(external fragmentation)는 다른 크기의 연속적인 페이지 그룹을 빈번하게 할당하고 해제하여, 할당한 페이지 프레임 블록 사이에 작은 여유 페이지 프레임 여러 개가 '산재'하는 현상이다. 그 결과 나중에는 큰 크기의 연속된 페이지 프레임 할당을 요청할 때 이를 담을 충분한 여유 페이지가 있어도 메모리를 할당하지 못할 수 있다. 8개의 페이지 프레임이 사용되고 있지 ..
Unplugging ethernet (이더넷 연결 끊김)Qt에서 tcp ip 소켓을 사용하다보면 끊어진 경우를 확인해야할 상황이 발생합니다. 굳이 Qt가 아니더라도 언제 어디서나 서비스 제공자는 무조건 통신 상태를 확인해야 합니다만, Qt 프로그래밍에선, 플러그가 뽑힌 경우를 체크하기 까다롭습니다. 왜냐면 QAbstractSocket 클래스가 제공하는 ConnectedState는 tcp ip 연결된 이후에 물리적인 플러그 뽑힘 현상을 알려주지 않습니다. 슬프게도, Qt가 제공하는 그 어떤 소켓 클래스들도 물리적인 플러그 Unconnected를 확인하질 못합니다. 그래서 돌아가는 방법을 찾아야 합니다. Simple Main Code (이더넷 연결 끊김 기본 소스)우선, 간단한 tcp ip Socket Pr..
아래는 간단한 모드버스 다이어그램입니다. 그리고 실제 Modbus ASCII와 RTU의 차이는 아래와 같습니다. 모드버스 프로토콜 차이점 (ASCII - RTU) Modbus/ASCII Modbus/RTU Characters ASCII 0...9 and A..F Binary 0...255 Error check LRC CRC Frame start character ':' 3.5 chars silence Frame end characters CR/LF 3.5 chars silence Gaps in message 1 sec 1.5 times char length Start bit 1 1 Data bits 7 8 모드버스 프로토콜 차이점 (시리얼 프로토콜) Parity even/odd none even/odd ..