2010-08-21 2 views
0

임베디드 하드웨어에서 실행되는 사용자 인터페이스의 논리를 어떻게 코딩합니까? 전자 레인지, 평면 스크린 텔레비전, 휴대용 DVD 플레이어 및 디지털 시계조차도 요즘에는 복잡한 사용자 인터페이스를 가지고 있습니다. 모든 더러운 작업을 제거하는 데 사용할 수있는 도구/프레임 워크가 있거나 IF ELSE 종류의 구조를 사용하는 개발자입니까?임베디드 사용자 인터페이스 제어 방법

QT 또는 WxWidgets의 관점에서 사용자 인터페이스 툴킷을 요구하지 않습니다. 컨트롤 뒤에있는 로직을 처리 할 프레임 워크가 있는지 알고 싶습니다.

if (mTemperature > maxTemperature) 
    temperatureDialControl.Enabled = false; 
+1

이 질문은 대답하기에 너무 광범위합니다. 인장 반지에서 JVM을, MP3 플레이어에서 Linux를 실행할 수있는 경우 대답은 "당신은 공간과 전력 예산이있는 것"입니다. – msw

답변

1

저는 사용자 인터페이스가있는 여러 임베디드 제품 (및 UI가없는 제품)에 대해 Quantum Leaps의 Quantum Platform 프레임 워크 제품군을 사용했습니다.

QP는 이벤트 기반 프로그래밍 (기본적으로 모든 임베디드 시스템이 있음)을위한 프레임 워크입니다. 대부분의 사용자 인터페이스는 사용자 정의 할 수있는 "위젯"으로 구성되고 위젯은 일반적으로 이벤트 디스패처에서 이벤트 (시간 초과, 버튼 누름, 이동 등)를 수신하므로 사용자 인터페이스가 적절합니다. 이 "제어 반전"은 사용자 인터페이스에서 매우 일반적입니다. 필자가 경험 한 대부분의 (임베디드) 사용자 인터페이스는 이벤트 중심의 상태 머신이거나 그러한 방식으로 구현되어 있어야합니다.

로직 & 컨트롤을 특별히 다루었습니까? QP에 대한 좋은 점은 그것이 받아 들인 컴퓨팅의 액티브 - 오브젝트 모델이 아주 자연스러운 상태 기계 (평면 또는 계층 적)의 직접적인 구현임을 자부합니다. & 따라서 위의 예에서 새로운 온도로 "온도 업데이트"이벤트가 수신되고 상태 처리기가 로직을 수행하여 & 조치가 필요한지 결정합니다. 프레임 워크를 사용하면 컨트롤 뒤에 로직을 만들 수 있지만 인프라는 거의 모든 것을 처리합니다.

퀀텀 플랫폼은 상당히 매끈합니다. 또한 설계 (상태 차트)와 구현/코드 간의 연결 (추적 가능성)을 매우 쉽게 볼 수 있습니다. 무엇보다도 프레임 워크는 모든 인프라 (이벤트 대기열 & 디스패치, 상태 전환, 가비지 콜렉션, 메모리 풀 등)를 구현하므로 애플리케이션에 집중해야합니다.

저는 임베디드되지 않은 플랫폼에서 Nokia Qt를 사용했지만 귀하의 질문에 이미 알고 있다고 생각됩니다. 나는 Qt의 더 작은 "임베디드 가능"버전이 있다고 생각하지만 결코 사용하지 못했습니다.

0

이 거기 도구/프레임 워크 .. 모든 더러운 일을 제거하려면? 네, 있습니다. 임베디드 OS 및 RTOS라고합니다. 일반적으로 타이머, 버튼 및 기타 컨트롤에서 생성 된 인터럽트를 처리하는 데 도움을 주며 하드웨어 추상화 수준을 포함하며 다양한 통신 프로토콜 스택 등을 포함합니다. 따라서 기본적으로 모든 작업이 더렵습니다. 필요한 것은 IF/ELSE 또는 SWITCH 또는 원하는 것을 사용하여 제공하는 것을 처리하는 것입니다. 적어도 누가 가 mTemperature이 maxTemperature을 초과 거짓경우이어야한다 temperatureDialControl.Enabled 것을 잘 알고있다?

0

임베디드를 사용하면 원하는대로 자유롭게 작업 할 수 있으며 운영체제의 한계 또는 API가 더 이상 제한되지 않습니다. 임베디드 시스템은 이벤트 구동 형일 수 있습니다. 특히 전력 소비가 적은 경우 (배터리 전원)는 본질적으로 저전력 상태로 전환하고 이벤트에만 사용하기를 원하기 때문입니다. 하지만 인터럽트없이 아무런 이벤트도 사용할 수 없으며 요구 사항이 무엇이든간에 응답 시간이 보장되는 한 모든 것을 폴링 할 수 있습니다.

예를 들어 컴퓨터 키보드와 비교해 볼 때 전자 레인지 사용자 인터페이스는 시스템에 따라 복잡하거나 간단 할 수 있습니다. 비용에 대해 각각의 버튼은 마이크로 컨트롤러에 입력 될 수 있으며 마이크로 컨트롤러는 폴링하거나 각각의 인터럽트를 가져 와서 디버깅 등을 수행해야합니다. 예를 들어 컴퓨터 키보드 나 마우스처럼 하드웨어와 로직이 모두 필요합니다. 마이크로 컨트롤러는 시리얼 또는 SPI 또는 기타와 같은 일부 특별 또는 표준 버스에서 이벤트를 나타내는 단일 바이트 또는 패킷을 보냅니다. 이 작업을 수행하는 논리는 그 자체로 또 다른 마이크로 컨트롤러 일 수 있습니다.이 작업은 단추 누르기를 디버깅하고 감지 한 다음 상태가 변할 때 직렬 바이트를 발사하는 유일한 작업입니다. 폴링은 아마도 더 쉬울 지 모르지만 인터럽트를 사용하여 디버깅하는 방법을 상상할 수 있습니다.

임베디드는 운영체제 제한 및 api에 국한되지 않는다는 점에서 특별합니다. 단, 자신에게 부과 된 경우 (또는 고객이 부과하는 경우)는 예외입니다. 사용자 인터페이스는 일반적으로 데스크톱 프로그램 사용자 인터페이스보다 훨씬 간단합니다.

관련 문제