KR102304698B1 - 자동 장치 프로그램 생성을 위한 방법 및 장치 - Google Patents
자동 장치 프로그램 생성을 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR102304698B1 KR102304698B1 KR1020167015057A KR20167015057A KR102304698B1 KR 102304698 B1 KR102304698 B1 KR 102304698B1 KR 1020167015057 A KR1020167015057 A KR 1020167015057A KR 20167015057 A KR20167015057 A KR 20167015057A KR 102304698 B1 KR102304698 B1 KR 102304698B1
- Authority
- KR
- South Korea
- Prior art keywords
- pin
- user
- physical controller
- gui
- external
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Telephonic Communication Services (AREA)
Abstract
장치 프로그램의 자동 생성을 방법 및 장치는, 대응하는 외부 컨트롤러에 통신 가능하게 연결된 사용자 장치의 GUI(graphical user interface)에 표시되는 복수의 컨트롤러들 중에서 컨트롤러를 결정하는 것, 컨트롤러에 대해 GUI에서 사용자 상호작용 핀 레이아웃을 생성하는 것, GUI에, 컨트롤러에 의한 실행을 위한 복수의 동작들을 표시하는 것, 컨트롤러에 대한 복수의 동작들 중에서 동작을 결정하는 것, 동작의 파라미터들에 대해 선택되는 핀들을 연관시키는 것, GUI에서의 적어도 하나의 데이터 입력 필드로부터 동작에 대한 파라미터 데이터를 수신하는 것, 사용자 상호작용 핀 레이아웃, 수신된 파라미터 데이터, 동작에 의거하여 컨트롤러에 대한 프로그램을 생성하는 것, 및 외부 컨트롤러의 메모리에의 저장을 위해 프로그램을 송신하는 것을 포함한다.
Description
본 발명의 실시예는 일반적으로 자동 장치 프로그램을 생성하기 위한 방법 및 장치에 관한 것이다.
FPGA(field programmable gate array) 및 마이크로컨트롤러의 사용이 상당한 인기를 얻어 왔다. 컨트롤러의 커스터마이징, 낮은 제조 비용, 및 가용성으로 인해, 상업 기업 및 애호가에 의해 마찬가지로 장치들을 만드는 데 사용되는 마이크로컨트롤러(예를 들면, PIC 또는 ARDUINO 등)가 급증하게 되었다. 마이크로컨트롤러들은 프로세서 코어를 포함하는 단일 집적 회로상의 소형 컴퓨터 및 메모리를 포함하며, 이들은 주변 장치와 통신하는 입력/출력 데이터를 처리하기 위해 프로그래밍 가능하다. NOR FLASH 또는 OTP ROM 형태의 프로그램 메모리는 일반적으로 저용량의 랜덤 액세스 메모리(RAM)에 포함될 뿐만 아니라, 종종 마이크로컨트롤러 칩에도 포함된다. 마이크로컨트롤러는 일반적으로 임베디드 애플리케이션용으로 설계되고 있다.
그러나, 마이크로컨트롤러는, 일반적으로 온보드 메모리의 용량 내여야 하는 주어진 코드 세트에 한정된다. 프로그램이 복잡해짐에 따라, 메모리에 저장될 필요가 있는 코드의 크기가 커진다. 종종, 프로그래머는, 사용 가능한 메모리 공간을 확보하기 위해 잠재적인 프로그램들을 희생시키는 것에 의존한다. 또한, 프로그램은, 마이크로컨트롤러에 네이티브인 로컬 라이브러리 및 프로세서의 성능에 의해 정의되는 바와 같은 로컬 기능 및 한정된 능력으로도 제한된다. 기껏해야, 기본적인 외부 통신은, 매우 작은 범위의 애플리케이션들(예를 들면, 마이크로컨트롤러에 로컬로 저장된 프로그램들)과 상호작용하는 것으로 제한된다. 또한, 마이크로컨트롤러를 프로그래밍하는 것은, 사용자가 코딩 커맨드를 기억하고, 계층을 이해하고, 적절한 호출 구문을 이용해야 하므로, 사용자에게 큰 과제가 되고 있다. 그렇지 않으면, 작성된 프로그램이 실행되지 않거나, 또는 오류를 생성하게 된다.
따라서, 마이크로컨트롤러 프로그래밍을 단순화하고 최소한의 메모리 풋프린트를 유지하면서 마이크로컨트롤러 능력을 확장하기 위한 기술에 대한 필요성이 있다.
본 발명의 실시예는 일반적으로, 청구범위에서 더 완벽하게 제시되고, 실질적으로 도면들 중 적어도 하나에 관련하여 예시 및/또는 설명하는 바와 같이, 자동 장치 프로그램 생성을 위한 방법 장치에 관한 것이다.
본 개시의 이들 및 다른 특징 및 이점은, 동일한 참조 번호가 전체에 걸쳐 동일한 부분을 가리키는 첨부 도면과 함께, 본 발명의 다음의 상세한 설명의 검토로부터 이해될 수 있다.
본 발명의 상술한 특징을 상세하게 이해할 수 있도록, 위에서 간단히 요약된 본 발명의 특정 설명은 실시예를 참조하여 이루어지며, 실시예의 일부가 첨부된 도면에 나타나 있다. 그러나, 첨부된 도면은 본 발명의 전형적인 실시예만을 나타내며, 따라서 그 범위를 한정하는 것으로 생각해서는 안 되며, 본 발명에 대해 다른 동등한 유효한 실시예를 인정할 수 있음을 유의해야 한다.
도 1은 본 발명의 하나 이상의 실시예에 따른 자동 장치 프로그램 생성 시스템의 개요도.
도 2는 본 발명의 하나 이상의 실시예에 따른 상호작용 하드웨어 시각화로 장치 특정 하드웨어를 프로그래밍하기 위한 예시적인 그래픽 사용자 인터페이스(GUI)를 나타내는 도면.
도 3은 본 발명의 하나 이상의 실시예에 따른 상호작용 하드웨어 시각화를 위한 예시적인 그래픽 사용자 인터페이스(GUI)를 나타내는 도면.
도 4는 본 발명의 하나 이상의 실시예에 따른 원격 서비스와 상호작용하는 자동 생성 장치 프로그램을 실행하기 위한 컨트롤러에 의해 행해지는 방법의 흐름도.
도 5는 본 발명의 하나 이상의 실시예에 따른 도 2의 예시적인 GUI와의 자동 장치 프로그램 생성 상호작용을 위한 예시적인 방법의 흐름도.
도 6은 본 발명의 하나 이상의 실시예에 따른 도 2의 예시적인 GUI를 통해 프로그래밍된 외부 컨트롤러에 의한 원격 프로세스 호출에 대해 코딩 서버에 의해 행해지는 예시적인 방법의 흐름도.
도 7은 본 발명의 하나 이상의 실시예에 따른 예시적인 컴퓨팅 시스템 내의 모듈들의 블록도이고, 컴퓨터 시스템은, 상술한 실시예에서의 서버 또는 전자 장치를 포함하는 실질적으로 유사한 구조를 포함한다.
도 2는 본 발명의 하나 이상의 실시예에 따른 상호작용 하드웨어 시각화로 장치 특정 하드웨어를 프로그래밍하기 위한 예시적인 그래픽 사용자 인터페이스(GUI)를 나타내는 도면.
도 3은 본 발명의 하나 이상의 실시예에 따른 상호작용 하드웨어 시각화를 위한 예시적인 그래픽 사용자 인터페이스(GUI)를 나타내는 도면.
도 4는 본 발명의 하나 이상의 실시예에 따른 원격 서비스와 상호작용하는 자동 생성 장치 프로그램을 실행하기 위한 컨트롤러에 의해 행해지는 방법의 흐름도.
도 5는 본 발명의 하나 이상의 실시예에 따른 도 2의 예시적인 GUI와의 자동 장치 프로그램 생성 상호작용을 위한 예시적인 방법의 흐름도.
도 6은 본 발명의 하나 이상의 실시예에 따른 도 2의 예시적인 GUI를 통해 프로그래밍된 외부 컨트롤러에 의한 원격 프로세스 호출에 대해 코딩 서버에 의해 행해지는 예시적인 방법의 흐름도.
도 7은 본 발명의 하나 이상의 실시예에 따른 예시적인 컴퓨팅 시스템 내의 모듈들의 블록도이고, 컴퓨터 시스템은, 상술한 실시예에서의 서버 또는 전자 장치를 포함하는 실질적으로 유사한 구조를 포함한다.
본 발명의 실시예는, 자동 장치 코드 생성부, 및 보다 구체적으로는 그래픽 인터페이스를 통해 외부 컨트롤러용 프로그램을 자동으로 생성하는 것에 관한 것이다. 그래픽 인터페이스는, (예를 들면, 핀 레이아웃을 통해) 물리적 속성들을 빠르게 선택하는 것, 및 생성된 프로그램에서의 동작을 위한 입력 또는 출력 파라미터들로서 물리적 속성들을 할당하는 것에 대해 물리적인 컨트롤러의 시각화를 가능하게 한다. 시각적 큐(cue)는, 외부 컨트롤러에서 프로그램을 적절히 실행하기 위해 컨트롤러와 회로도를 페어링하거나 넷리스트에 따르는 데 사용자가 보내는 시간의 양을 줄이다.
일부 실시예에서, 생성된 프로그램은, 코딩 서버 또는 서버들의 그룹에 대한 원격 프로세스 호출을 실행함으로써, 전자 장치에서의 외부 컨트롤러의 기능을 확장한다. 전자 장치는, 작업들을 수행하기 위한 적어도 하나의 프로세서 또는 마이크로컨트롤러를 갖는 장치이다. 전자 장치의 일부 실시예는, ARDUINO, TEXAS INSTRUMENTS LAUNCHPAD, FREESCALE BOARDS KINETIS, ST MICROELECTRONICS STM32, INTEL EDISON 등과 같은 프로그래밍 보드들을 포함한다. 컨트롤러를 위한 전자 장치의 일부 실시예는, NEST THERMOSTAT, PHILIPPS HUE, BELKIN, WITHINGS 등의 다른 조립 장치 및 시스템의 컨트롤러를 프로그래밍할 수 있다.
코딩 서버는, 외부 컨트롤러가 하드웨어 및 소프트웨어의 한계(예를 들면, 저전력 프로세서, 제한된 메모리 용량, 축소 운영 체제, 명령 세트들의 부족 등)로 인해 실행하는 데 제약되는 보다 복잡한 프로그램들을 실행하는 보다 무거운 처리 부하를 실행한다. 코딩 서버는, 추가적인 서드파티 데이터베이스 및 서비스(예를 들면, AMAZON, EBAY, FACEBOOK, APPLE PUSH NOTIFICATION 서버, 텍스트 메시지 서버, 이메일 서버 등)를 인증 및 액세스하는 커맨드를 실행할 수도 있다.
커스터마이징된 그래픽 사용자 인터페이스(GUI)를 통해 외부 컨트롤러 및 동작에 대해, 코드가 자동으로 생성된다. 코드는 또한, 외부 컨트롤러에 대해 들어오고 나가는 처리된 데이터를 다루도록, 컨트롤러에 대해 자동으로 생성된 코드를 미러링하는 프로그램을 가질 수도 있는 원격 코딩 서버로 조정된다. GUI는 선택된 컨트롤러, 미리 정해진 동작들의 리스트 및 컨트롤러에 대한 라이브러리를 제시해서, 원격 코딩 서버에서의 프로세스들에 대한 액세스 및 호출들을 생성한다. GUI는 컨트롤러의 실제 핀들의 표시를 포함한다. 핀 레이아웃에서의 핀들의 선택은, 선택된 컨트롤러에 대한 프로세스 호출들에 대응하는 미리 생성된 코드에 삽입될 데이터로서 해석된다. 일부 실시예에서, 프로세스의 호출들은 원격 서버 또는 코딩 서버에 상주하는 프로세스들에 대한 것이다. 컨트롤러에 저장되는 AGCP(automatically generated controller program)는 복수의 프로세스 호출들을 포함할 수 있다. 프로세스 호출 및 변수들에 대한 연관된 데이터는, AGCP로부터의 변수 데이터를 사용하여 코드를 저장 및 실행하는 원격 코딩 서버에 통신된다. 미리 생성된 코드의 실행 후에, 원격 코딩 서버는 필터링, 처리를 행하고, 외부 컨트롤러 타입에 네이티브인 포맷된 데이터를 반환한다. 다른 실시예에서, AGCP는 또한 종래의 코드 및 프로세스 호출을 포함한다. 추가적인 실시예는, 후속 프로세스의 호출들을 위해 컨트롤러에 전송되는, 원격 코딩 서버에서의 코드의 생성을 포함한다.
설명되는 다음 실시예에서, "프로세스"는, 실행 컴퓨터(예를 들면, 서버, PC 및 모바일 장치 등)에 사전 전개된 미리 생성된 코드 또는 즉시 실행 코드 베이스를 말한다. 각 프로세스는 사용자에게, 이름, 프로세스 ID, 아이콘, 또는 사용자에의 다른 식별자에 의해 고유하게 식별된다. "실행"은, 컴퓨터에서의 프로세스의 시작을 말한다(로컬 또는 원격, 또는 클라우드 기반). "번들"은, 공통의 속성(API 이름, 공통 파라미터들, SDK, 및 파라미터 이름, 원격 서버 등)에 의해 조직화되는 프로세스들의 집합을 말한다. 본원에서 논의되는 예는 범위가 한정되어 있지 않고, 오히려 설명을 위해 특정 실시예들을 구분하는 것이다.
도 1은 본 발명의 하나 이상의 실시예에 따른 자동 장치 프로그램 생성 시스템(100)의 개요도이다. 시스템(100)은 사용자 장치(105), 집적 회로 장치(즉, 전자 장치)(130), 원격 코딩 서버(135), 및 외부 서버(140)를 포함한다. 일부 실시예에서, 원격 코딩 서버(135)는 복수의 원격 코딩 서버들(135) 중 적어도 하나이다. 마찬가지로, 일부 실시예에서, 외부 서버(140)는 복수의 외부 서버들 중 적어도 하나이다. 일부 실시예에서, 사용자 장치(105) 및 집적 회로 장치(130)는 인터넷(154) 또는 다른 네트워크를 통해 통신 가능하게 연결된다. 그러나, 설명을 용이하게 하기 위해, 다음의 실시예는, 사용자 장치(105)가 집적 회로 장치(130)에 (예를 들면, USB, 병렬/직렬 데이터 케이블, 네트워크 케이블 등을 통해) 직접 연결되어 있는 것을 상정한다.
집적 회로 장치(130)는 외부 컨트롤러(110) 및 메모리(115)를 포함한다. 일부 실시예에서, 집적 회로 장치(130)는 외부 컨트롤러(110)에 연결된 주변 전자 장치(120)를 더 포함한다. 주변 전자 장치(120)는 센서, 조명, 오디오 스피커, 액추에이터, 디스플레이, 프린터, 스캐너, I/O 장치 등을 포함하지만, 이에 제한되는 것은 아니다. 외부 컨트롤러(110)는 마이크로컨트롤러(예를 들면, PIC, ARDUINO YUN 등)일 수 있다. 외부 컨트롤러(110)는 인터넷(154), CLOUD, 네트워크 등을 통해 원격 코딩 서버(135)에 통신 가능하게 연결된다. 일부 실시예에서, 외부 컨트롤러(110)는, 사용자 장치(105)에 의한 자동 프로그램 생성 후에 및/또는 대응하는 헤더 파일 및 라이브러리들이 메모리(115)에 저장된 후에, 원격 코딩 서버(135)에 연결되어서, 원격 코딩 서버(135)에서의 명령들을 실행한다. 헤더 파일들은 원격 코딩 서버(135)에서의 원격 프로세스 호출의 실행을 가능하게 한다.
원격 코딩 서버(135)는, 외부 컨트롤러(110)에 저장된 AGCP로 통합된, 사용자 장치에서 선택되는 제공된 동작들을 실행하도록, 라이브러리, 애플리케이션 프로그램 인터페이스(API), 및 소프트웨어 개발 키트(SDK)를 저장한다. 일부 실시예에서, 원격 코딩 서버(135)는, 외부 컨트롤러(110)에 저장된 AGCP에서의 원격 프로세스 호출을 실행하도록, 사용자 계정, 크리덴셜(credential), 및 다른 데이터를 저장한다. 또한, 원격 코딩 서버(135)는 프로그램 로직 라이브러리, 저장된 API, 및 크리덴셜을 이용하여, 외부 서버(140)와 인터페이싱해서 원격 프로세스 호출을 실행한다. 원격 코딩 서버(135)는, 원격 프로세스 호출에 임베드된 파라미터 데이터를 수신해서, 프로그램 로직 라이브러리에 저장된 기능들을 전개한다. 일부 실시예에서, 프로세스 호출은, 마크업 언어(예를 들면, XML, JAVASCRIPT 등)로 미리 생성될 수 있는 미리 정해진 코드에 대응한다. 마크업 언어는, 미리 생성된 코드를 포함하는 미리 정해진 제공된 동작들에 변수 데이터 및 파라미터의 할당, 파싱(parsing), 및 삽입을 가능하게 한다. 그러나, 다른 실시예는, 미리 정해진 코드 구문(syntax)에 의거하여 파라미터 및 변수 데이터의 수신시에 코드를 생성하는 것을 포함한다.
원격 코딩 서버(135)에서의 처리 및 실행 후에, 원격 코딩 서버(135)는, 원격 코딩 서버(135)에 저장된 사용자 계정의 미리 정해진 명령 및/또는 원격 프로세스 호출에 따라, 외부 컨트롤러(110)에 네이티브인 코드로 수신된 데이터를 변환할 수 있다. 일부 실시예에서, 원격 코딩 서버(135)는 또한 원격 프로세스 호출을 실행하기 위해 코드 생성부 및 런타임 엔진(도시 생략)을 포함할 수 있다. 이러한 실시예에서, 집적 회로 장치(130)로부터 수신된 원격 프로세스 호출은, 런타임 엔진에 의한 전개를 위해 코드를 더 생성하는 원격 프로세스를 트리거링한다. 프로그램은, 외부 또는 내부일 수 있고 외부 API를 포함할 수 있는 코드 유틸리티를 통해 외부 서버(140)에 액세스하기 위한 코드를 포함할 수 있다. 코드 유틸리티는 날짜 변환, 파일 변환, 암호화, 디버깅 등의 기술적인 문제를 해결하는 루틴이다.
외부 서버(140)는, 실행 가능한 명령을 통해 액세스되는 서드파티 데이터베이스 및 서비스를 호스팅하는 컴퓨터를 포함한다. 외부 서버(140)는, AMAZON, EBAY, TWITTER, 이메일 서버, 텍스트 메시지 서버, 은행 계좌 등과 같은 개인 및 공용 서버들을 포함한다. 외부 서버(140)는 직접 원격 코딩 서버(135)에 연결된다(화살표(160)로 표시). 다른 실시예에서, 외부 서버(140)는 인터넷(154) 또는 다른 네트워크를 통해 원격 코딩 서버(135)에 통신 가능하게 연결된다.
사용자 장치(105)는, 컴퓨터, 랩톱, 태블릿이거나, 또는 사용자 인터페이스 및 통합 개발 환경(IDE)을 갖는 다른 전자 처리 장치일 수 있다. 사용자 장치(105)는, 명령 및 알고리즘을 포함하는 메모리(114), CPU(108), 지원 회로(112)를 포함한다. CPU(108)는 사용자 장치(105)에 대한 입력 및 출력을 처리한다. CPU(108)는 임의의 상용 프로세서, 마이크로프로세서, 마이크로컨트롤러 등일 수 있다. 지원 회로(112)는 사용자 인터페이스, 클록 회로, 네트워크 통신, 캐시, 전원, I/O 회로 등과 같은 CPU(108)에 기능을 제공하는 잘 알려진 회로를 포함한다. 다른 실시예는 커스텀 ASIC(Application Specific Integrated Circuit)에 대해 제어 알고리즘을 사용할 수 있다. 일부 실시예에서, 사용자 인터페이스는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호작용 메커니즘을 포함한다. 일부 실시예에서, 사용자 인터페이스는 집적 회로 장치(130)와 통신할 수 있다.
메모리(114)는 데이터 및 실행 가능한 소프트웨어를 저장하는 데 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 랜덤 액세스 메모리, 읽기 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하지만, 이에 제한되는 것은 아니다. 메모리(114)는, 운영 체제(116), IDE(118), 및 시각적 컨트롤러 모듈(122)에 대응하는 컴퓨터 판독 가능한 명령을 저장한다. 시각적 컨트롤러 모듈(122)은 설명을 용이하게 하기 위해 단일 모듈로 설명하지만, 다른 실시예는 저장 또는 처리 효율을 향상시키기 위해 개별 모듈들에 전용인 특정 프로세스들을 포함한다.
시각적 컨트롤러 모듈(122)은 원격 코딩 서버(들)(135)와 통신하여(화살표(150)), 원격 코딩 서버(135)에 의해 행해질 수 있는 미리 생성된 번들들 및 동작들을 검색한다. 원격 코딩 서버(135)는, 원격 프로세스 호출에 대응하는 미리 생성된 코드를 프로그램 로직 라이브러리 API, SDK, 및 다른 실시예에 저장한다. 시각적 컨트롤러 모듈(122)은 인터넷(154) 및/또는 다른 네트워크를 통해 원격 코딩 서버(135)와 통신한다. 시각적 컨트롤러 모듈(122)은, 외부 컨트롤러(110)에 대해 사용자가 AGCP 내로 통합하기 위해 선택하는 선택 가능한 동작들의 라이브러리를 생성한다. 라이브러리는 원격 코딩 서버(135)로부터 인터넷(154)을 통해 다운로드될 수 있다(화살표(150)로 표시).
일부 실시예에서, 시각적 컨트롤러 모듈(122) 및 IDE(118)는 AGCP를 위한 프로세스 또는 프로그램을 원격 코딩 서버(135)에 더 저장한다. AGCP에 대응하는 프로그램을 저장하는 것은, 원격 코딩 서버(135)가 외부 서버(140)로부터의 데이터를 대기하고, 추가적인 처리를 행하고 데이터의 외부 컨트롤러(110)에의 송신하는 것을 가능하게 한다. 예를 들면, AGCP는, TWEET이 사용자에 의해 수신될 때마다 외부 컨트롤러(110)의 핀에 연결된 LED를 불이 들어오게 생성될 수 있다. TWEET은 외부 컨트롤러(110)에 의해 직접 수신되지 않는다. 오히려, 사용자 계정에 수신된 TWEET은, TWITTER에 액세스하기 위한 사용자 계정 인증 크리덴셜을 갖는 원격 코딩 서버(135)에의 알림을 트리거링할 수 있다. 시각적 컨트롤러 모듈(122)로부터의 프로그램에 따르는 원격 코딩 서버는 TWEET 알림을 "PIN 7 HIGH" 커맨드로 변환하고 이 커맨드를 외부 컨트롤러(110)에 통신한다. AGCP에 따르는 외부 컨트롤러(110)는 PIN 7 HIGH 커맨드를 대기하고, 후에 PIN 6 LO를 설정하여 연결된 LED를 오프한다. 이에 따라 상기 실시예에서, 원격 코딩 서버(135)에서의 프로그램은 외부 컨트롤러(110)에서의 AGCP를 적절히 실시하도록 준비되어야 한다.
시각적 컨트롤러 모듈(122)은 또한, 외부 컨트롤러(110)의 토폴로지를 나타내는 외부 컨트롤러(110)의 시각적 표현을 생성한다. 후술하는 바와 같이, 시각적 표현은 핀 레이아웃일 수 있다. 프로그램에 대해 선택된 핀들을 변수들과 연관시키도록 핀 레이아웃에서 선택이 이루어진다. 예를 들면, 사용자는, 센서들(예를 들면, 온도계, 포토다이오드, 마이크로폰, 전압계 등) 및 액추에이터(모터, 릴레이 등) 등의 핀들에 연결된 특정 주변 전자 장치들의 핀 레이아웃에 대해 지정할 수 있다.
시각적 컨트롤러 모듈(122)은, 선택된 동작의 기능들에 대응하는 미리 정해진 필드들에서 프로그램에 대한 추가적인 파라미터들을 수신한다. 이어서, 시각적 컨트롤러 모듈(122)은 IDE(118)와 통신하여, 컨트롤러의 네이티브 언어의 선택된 동작, 핀 데이터, 및 파라미터를 갖는 패키징된 프로그램을 자동 생성하고, 프로그램을 외부 컨트롤러(110)(화살표(145)로 표시)에 통신해서, 프로그램을 메모리(115)에 저장한다. 일부 실시예에서, IDE는, 원격 프로세스 호출의 실행을 위해 원격 코딩 서버(135)에 액세스하기 위한 대응하는 헤더 파일 및 단순화된 명령을 송신할 수 있다.
동작에서, 사용자는, 연결된 온도 센서가 특정 온도 값에 도달했을 때, (예를 들면, 필드에 지정된) 텍스트 메시지를 송신하는 동작을 선택할 수 있다. 사용자는 물리적으로 외부 컨트롤러(110)를 온도 센서에 연결하는 핀을 선택한다. 또한, 사용자는, 인터넷(154)에 액세스하기 위한 연결된 통신 회로에 대응하는 핀들을 선택할 수 있다. 완료되면, IDE(118)는, 원격 코딩 서버(135)에 저장된 텍스트 메시지 프로세스에 대한 원격 프로세스 호출을 사용하여 텍스트 메시지를 송신하기 위해, 연관된 핀 및 필드 데이터로 프로그램을 자동으로 컴파일링한다. 이어서, 원격 코딩 서버(135)는 인터넷(154)을 통해 명령을 수신하고, 미리 정해진 API에 액세스해서 외부 서버(140)를 통해 텍스트 메시지를 송신한다(화살표(160)로 표시). 외부 컨트롤러(110)는, 자동으로 생성된 컨트롤러 프로그램(AGCP)의 독립적인 실행을 위해 사용자 장치로부터 분리되어도 된다.
외부 컨트롤러(110)가 인터넷(154)으로부터 개시되는 데이터를 수신하는 실시예에서, 원격 코딩 서버(135)는 AGCP로 조정되는 대응하는 프로그램을 저장한다. 외부 컨트롤러(110)가 FACEBOOK 게시물이 수신될 때마다 LED를 점멸하는 예에서, 원격 코딩 서버(135)는, FACEBOOK에 대한 사용자 크리덴셜에 의거하여 로그인하기 위한 미리 생성된 프로세스 또는 저장 프로그램을 갖는다. 이어서, 프로그램은 Facebook 알림을 대기하고, 알림을 컨트롤러의 네이티브 언어의 대응하는 외부 컨트롤러(110) 커맨드(예를 들면, PIN 8 HIGH)로 변환한다. 프로그램은 PIN 8 HIGH 커맨드를 인터넷(154)를 통해 외부 컨트롤러(110)에 전송한다. 이어서, 외부 컨트롤러(110)는 메모리(115)에 저장된 AGCP를 사용하여 PIN 8 HIGH 커맨드를 처리한다.
도 2는 본 발명의 하나 이상의 실시예에 따른 상호작용 하드웨어 시각화로 장치 특정 하드웨어를 프로그래밍하기 위한 예시적인 그래픽 사용자 인터페이스(GUI)(200)의 도면이다. GUI(200)는 도 1에서 상술한 시스템(100)에서의 동작을 상정한다.
GUI(200)는, 도 1에서 상술한 IDE(118)의 일부로서 제시된다. GUI(200)는, 서비스 모듈(205), 핀 레이아웃(210), 동작 파라미터 모듈(215 및 225), 컨트롤러 레이아웃 모듈(230), 애플리케이션 선택 모듈(235), 코딩 윈도우(240), 및 전개 버튼(245)을 포함한다. 서비스 모듈(205)은, 사용자에 의해 입력된 파라미터만을 사용하여 특정 동작을 프로그래밍할 수 있도록, GUI(200)를 통해 사용자가 선택할 수 있는 동작들을 조직화하고 제시하기 위한 명령들을 포함한다. 서비스 모듈(205)은, IDE(118), 원격 코딩 서버(135), 및 외부 서버(140)에 의해 제공되는 사용자 선택 가능한 동작들의 번들들을 생성한다. 일부 실시예에서, 서비스 모듈(205)은 원격 코딩 서버(135)로부터의 업데이트된 리스트의 동작들을 다운로드한다.
컨트롤러 레이아웃 모듈(230)은, IDE(118)에 의해 프로그래밍될 수 있는 다양한 컨트롤러 타입들을 저장 및 인식한다. 컨트롤러 레이아웃 모듈(230)은, 다양한 컨트롤러에서 프로그램들의 저장 및 인터페이싱을 위해 언어 및 데이터 통신 명령을 컴파일링하는 것을 결정한다. 컨트롤러 레이아웃 모듈(128)은 또한, 사용자에 의한 프로그래밍 중에 IDE(118) 및 UI와 핀 레이아웃(210)의 생성을 인터페이싱하기 위한 명령 및 세부 사항을 포함한다. 더 후술하는 바와 같이, 핀들은 선택된 동작(220)과 연관되어 사용자에 의해 선택된다. 추가적인 실시예는, 핀 레이아웃(210)에 나타낸 바와 같은 선택된 동작을 전개하기 위해 필요한 핀들의 수의 카운트 특징을 포함한다. 사용자 선택된 또는 자동 결정된 외부 컨트롤러(110)는 (ARDUINO YUN으로 표시된) 컨트롤러 레이아웃 모듈(230)에 의해 식별된다.
애플리케이션 선택 모듈(235)은, 외부 컨트롤러(110)에 대응하는 컨트롤러 레이아웃 모듈을 위해 자동 생성되는 적어도 하나의 프로그램을 명명 및 저장하기 위한 것이다. 설명하는 실시예에서, 애플리케이션은, 외부 컨트롤러(110)에 연결된 온도 센서에 의해 특정 온도가 감지될 경우, 텍스트 메시지를 송신한다. 생성되는 프로그램에 대응한 코드가 코딩 윈도우(240)에 표시된다. 코딩 윈도우(240)는, 외부 컨트롤러(110) 및 메모리(115)에 저장되기 전에 코드에 대한 특정 커스터마이징을 하도록 사용자에 의해 편집될 수도 있다. 전개 버튼(245)의 선택은 외부 컨트롤러(110)의 네이티브 원어로 프로그램을 변환 및 통신한다. 일부 실시예에서, 변환은 컴파일링 기능일 수 있다. 선택적인 실시예는, 자동 생성 코드를 다른 파일 포맷(예를 들면, .js, .txt, .xml 등)으로 내보내기 위한 다운로드 버튼(250)을 포함한다. 통상의 기술자는, 여기에서 설명되는 버튼이 임의의 사용자 선택 가능한 아이콘, 텍스트, 또는 시각적 인터페이스를 포함함을 인식할 것이다.
예를 들면, 선택된 동작(220)이 SMS(short message service) 텍스트 메시지를 보내는 것이다. 텍스트 메시지에 대한 수신처 번호가 파라미터 모듈(225)의 대응하는 필드에 입력된다. 또한, 선택된 핀들은, 서비스 모듈(205)로부터 선택된 동작(예를 들면, 온도 감지)에 대해 파라미터 모듈(225)의 미리 정해진 필드에서 또한 지정되는 아날로그 온도 센서와 대응하는 것이다. 동작 파라미터 모듈(215)에서는 온도 감지를 위해 필요한 추가적인 파라미터들이 요청된다. GUI(200)는 선택된 동작들에 대해 필요한 파라미터 데이터만을 표시한다.
동작시에, 원격 코딩 서버(135)에서의 원격 프로세스를 호출함으로써 SMS 텍스트 메시지가 송신된다. 외부 컨트롤러(110)는 저장된 명령들(예를 들면, 헤더 파일)을 통해 원격 코딩 서버(135)에 통신한다. 프로세스는 미리 정해진 코드를 전개해서, 사용자 특정 전화 번호에 대한 룩업 테이블 및 게이트웨이를 찾아 SMS 텍스트 메시지를 송신하고 SMS 서버에 액세스한다.
예시적인 시스템에서, 시스템은 코드 생성 서비스로서 TEMBOO 서비스를 사용할 수 있다. TEMBOO 클라이언트(GUI(200))는, ARDUINO 컨트롤러에서 플래시되는 SKETCH 프로그램을 실행하고 있는 ARDUINO 컨트롤러 내의 연결 클라이언트로서 사용된다. 시스템은, 예시적인 HTTPS 통신 프로토콜을 사용해서, 미리 생성된 코드 및 동작들을 갖는 TEMBOO 코드 생성 서버들에 통신한다(예를 들면, 2000 "스마트 코드 프로세스들"를 통해). 미리 생성된 TEMBOO 코드는, TEMBOO 서버들에서의 스마트 프로세스들에 대한 호출을 포함하는 ARDUINO 컨트롤러에 플래시되는 SKETCH를 실시하기 위해, 데이터베이스, 코드 유틸리티, API, 및 커스텀 프로세스를 이용한다. ARDUINO는 이용 가능한 예시적인 수많은 가능한 마이크로프로세서들 및 컨트롤러들을 나타내며, 본원에서 논의되는 실시예와 함께 사용하기 위해 이용 가능할 수 있다.
도 3은, 본 발명의 하나 이상의 실시예에 따른 상호작용 하드웨어 시각화를 위한 예시적인 그래픽 사용자 인터페이스(GUI)를 나타내는 도면이다. 도면은 상술한 도 2에서 설명한 핀 레이아웃(210)과 마찬가지인 예시적인 핀 레이아웃(305)이다. 핀 레이아웃(305)은, 상술한 AGCP의 동작과 연관되어 선택된 강조 또는 강조 표시된 핀들(3 및 4)을 포함한다. 강조된 핀은 다양한 색상, 심볼, 점멸, 형상들, 및 선택되지 않은 또는 동작과 관련없는 핀들과의 시각적으로 구별되는 다른 형태일 수 있다. 일부 실시예에서, 강조된 핀들은 프로그래밍의 진행을 가리키도록 강조의 조합들을 채용한다. 즉, 핀은, 연결되는 주변 장치에 대한 변수 파라미터가 부족할 경우 점멸 빨강이고 변수 파라미터가 입력되었을 경우 그린일 수 있다. 예를 들면, 동작 측정 모터 부하에서 나오는 검출된 전류 등의, 대응하는 동작 파라미터 모듈(215)에 모든 파라미터들이 입력될 때까지 모터에의 연결을 위해 선택된 핀들이 빨강을 점멸한다.
선택된 핀(310)은, 입력 핀(315), 출력 핀, 클록 신호 등, 자동 생성 프로그램에서의 역할이 지정될 수 있다. 일부 실시예에서, 핀들은, 핀 레이아웃의 빠른 사용자 인식을 위해 커스터마이징된 기능들(예를 들면, 조명, 온도계, 모터 등)로 라벨링될 수 있다. 선택된 핀(310)은 또한, 아날로그 또는 디지털 신호 등의 신호 타입(320)을 수신 또는 출력하도록 설정된다. 선택된 핀, 신호 타입, 및 동작 데이터가 GUI(200)에서 상술한 AGCP에 통합된다.
이에 따라, GUI(200)는 전반적으로 핀 레이아웃(332)을 통해 외부 컨트롤러(110)의 시각화를 가능하게 할 뿐만 아니라, 외부 컨트롤러(110)에서 사용자가 원하는 선택된 동작(220)의 프로그래밍을 단순화한다. 표시되는 핀 레이아웃(305)에서 이루어지는 선택들로 인해, 물리적 핀 기능들의 시각적 조정이 가능해지고, 핀이 출력 핀, 입력 핀, 클록 등과 같이 지정된다. 시각적 큐는, 외부 컨트롤러에서 프로그램을 적절히 실행하기 위해 컨트롤러와 회로도를 페어링하거나 넷리스트에 따르는 데 사용자가 보내는 시간의 양을 줄이다.
도 4는, 본 발명의 하나 이상의 실시예에 따른 원격 서비스와 상호작용하는 자동 생성 장치 프로그램을 실행하기 위한 외부 컨트롤러(110)에 의해 행해지는 방법 400의 흐름도이다. 방법 400은 원격 코딩 서버(135), 외부 컨트롤러(110), 및 GUI(200)에 의해 실시된다. 일부 실시예에서, GUI(200)는 호스트 컴퓨터 등의 사용자 장치(105)에 있다.
방법 400은 단계 405에서 시작하고 단계 410으로 계속된다. 단계 410에서, GUI(200) 및 IDE(118)를 통해 선택된 컨트롤러 레이아웃, 선택된 동작들, 파라미터들에 의거하여 프로그램이 자동 생성된다. GUI(200)를 통해, 사용자는, 선택된 컨트롤러의 시각적 핀 레이아웃(219)상의 핀들을 선택할 수 있을 뿐만 아니라, 핀에 연결된 주변 장치의 유형을 선택하고, IDE(118)에서 변수 데이터를 입력하여 외부 컨트롤러(110)에 대한 코드를 생성할 수 있다. 생성된 프로그램은, 원격 코딩 서버(135)에서의 동작들에 대한 프로세스 호출들뿐만 아니라 로컬 컨트롤러 기능과 관련된 네이티브 코드를 포함할 수 있다. 예를 들면, 생성된 프로그램은, 도 2에서와 같이 외부 컨트롤러(110)가 온도가 31 ℃를 초과하는 것을 검출할 때마다 텍스트 메시지를 송신하기 위함일 수 있다. 따라서, 프로그램은, 온도 센서에 연결된 외부 컨트롤러(110)의 특정된 핀들의 전압을 읽는 로컬 커맨들에 의거하여 (예를 들면, 런 타임 엔진을 통해) 원격 코딩 서버(135)에 의해 실행되는 텍스트 메시지를 송신하는 것에 대한 프로세스 호출을 포함한다.
AGCP는 외부 컨트롤러(110)에 무선(예를 들면, Wi-Fi, 휴대 전화 등) 또는 유선(예를 들면, USB, CAT5 등)으로 전송된다. 일부 실시예에서, 메모리(115)는 "FLASHED"이거나, 다른 방식으로는 원격 코딩 서버(135)에 액세스하기 위한 헤더 파일들을 포함하는 프로그램에 의해 완전히 덮어쓰기된다. 일부 실시예에서, 외부 컨트롤러(110)에 프로그램을 저장하는 것은, 코드를 다른 컴퓨터 언어(예를 들면, 기계어)로 변환 또는 컴파일링하는 것은 포함한다.
단계 415에서, 외부 컨트롤러(110)를 위한 프로그램은 메모리(115)에 저장된다. 단계 420에서, AGCP는 외부 컨트롤러(110)에서의 실행을 시작한다. 일부 실시예에서, 외부 컨트롤러(110)는 연관되고 접속된 주변 전자 장치(120)로부터의 데이터를 샘플링하고 생성한다. 계속해서 예를 들면, 외부 컨트롤러(110)는 주위 온도 조건에 대해 온도 센서에 의해 생성된 아날로그 전압 레벨을 읽기 시작한다.
방법 400은 단계 425로 계속되어, 원격 프로세스 호출 및 연관된 변수 데이터를, TEMBOO 서비스 등의 코드 생성 서비스로 원격 코딩 서버(135)에 송신한다. 계속해서 예를 들면, 온도가 온도 임계값을 초과하는 것으로 판독되면, 외부 컨트롤러(110)는, 원격 코딩 서버(135)에 미리 생성된 코드로서 저장된 텍스트 메시지 동작에 대한 호출의 통신을 통해 텍스트 메시지를 송신하는 원격 프로세스 호출을 실행한다.
단계 430에서, 원격 코딩 서버(135)는, 원격 코딩 서버(135)에 저장된 미리 생성된 코드에 변수 데이터를 삽입함으로써 미리 생성된 코드를 실행한다. 계속해서 예를 들면, 원격 코딩 서버(135)는 SMS 텍스트 메시지를 송신하기 위한 미리 생성된 코드를 검색하고, 텍스트 스트링 메시지뿐만 아니라, GUI(200)를 이용한 자동 프로그램 생성 중에 지정된 수신 전화 번호를 삽입한다. 이어서, 원격 코딩 서버(135)는, 전화 번호와 연관된 수신자 장치가 텍스트 메시지를 수신하도록, 연관된 인터넷 및 셀룰러 프로토콜을 사용하여 네트워크에 코드를 전개한다.
단계 435에서, 외부 컨트롤러(110)는, 연관된 변수 데이터 등, 원격 코딩 서버(135) 서비스로부터 외부 컨트롤러(110)에 네이티브인 언어로 데이터를 수신한다. 원격 코딩 서버(135)는, 데이터를, 프로세스 호출을 실행하는 데 사용되는 프로그래밍 언어로부터 네이티브 언어로 변환할 수 있다. 외부 컨트롤러(110)는, 프로그래밍 중에 사용자가 선택한 외부 컨트롤러(110)에 의한 효율적인 처리를 위해, 코드 생성 서비스에 의해 네이티브 포맷으로 포맷된 연관된 변수 데이터(예를 들면, 이진 데이터, 하이 또는 로우 신호, 수치, 스트링 등)를 수신한다. 계속해서 예를 들면, 사용자 프로그램(141)은 또한, 텍스트 메시지가 성공적으로 송신되었을 경우 핀(5)에 연결된 LED를 불이 들어오게 하는 명령을 포함할 수 있다. 그러한 경우에, 변수 데이터는 핀(5)을 하이로 설정하기 위한 코드를 포함한다. 다른 실시예에서, 변수 데이터는, 외부 컨트롤러(110)에 의해 AGCP를 실행하기 위한 값으로 디코딩된 데이터일 수 있다. 이러한 예에서, "51"은 숫자 "51"에 대응하는 데이터를 대기하는 외부 컨트롤러(110)에 의해 송신되어서, 이후 로컬 저장된 로직을 이용하여, 제 1 자리를 핀 번호로, 그리고 제 2 자리를 하이("1") 또는 로우("0")로 파싱 또는 디코딩할 수 있다.
단계 440에서, 외부 컨트롤러(110)는, 원격 코딩 서버(135)로부터 수신된 데이터를 사용하여 AGCP의 실행을 계속한다. 예의 마지막으로, 외부 컨트롤러(110)는 외부 컨트롤러(110)에 연결된 로컬 전원을 선택적으로 리디렉션(redirection)해서, 핀(5) 및 접지에 연결된 LED를 불이 들어오도록 핀(5)에 접압 바이어스를 걸 수 있다. 방법 400은 단계 445에서 종료된다.
도 5는 본 발명의 하나 이상의 실시예에 따른 도 2의 예시적인 GUI(200)로 자동 장치 프로그램 생성 상호작용을 위한 예시적인 방법 500의 흐름도이다. GUI(200)는 사용자 장치(105)에 의해 외부 컨트롤러(110)를 프로그래밍하도록 실시된다.
이 방법은 단계 505에서 시작하고 단계 510으로 계속된다. 단계 510에서, 리스트, 선택 가능한 아이콘들의 그룹 등으로서 표시되는 복수의 컨트롤러들로부터 선택되는 바와 같이, 일 유형의 컨트롤러가 결정된다. 컨트롤러를 선택함으로써, 시각적 컨트롤러 모듈(122)은 주지의 라이브러리들, 핀 구성들, 핀 동작들, 최대 전압/전류 허용 오차, 클록 주파수 등과 같은 선택된 컨트롤러에 고유한 세부 내용을 검색하고 파퓰레이팅한다. 일부 실시예에서, 선택의 결정은, 사용자 장치(105)에 연결된 외부 컨트롤러(110)의 타입을 자동으로 검출하는 것에 의거한다.
다음으로 단계 515에서, 선택된 컨트롤러의 시각적 레이아웃이 GUI(200)에 표시된다. 시각적 레이아웃은, 외부 컨트롤러(110)를 프로그래밍하기 위해 선택 가능하고 상호작용하는 핀 레이아웃(210)을 포함한다. 일부 실시예에서, 프로그램에서 다른 선택된 동작들에서 사용된 할당된 기능들에 대한 핀들은 강조 표시된다. 다른 실시예에서, 외부 컨트롤러(110)의 시각화를 프로그래밍 및 생성하는 데 사용자를 돕도록, 동반되는 마이크로컨트롤러 데이터시트로부터의 추가적인 표시 데이터가 추출 및 파퓰레이팅될 수 있다.
다음으로, 단계 520에서, GUI(200)에서 수신된 미리 정해진 동작들의 선택에 결정이 이루어진다. 미리 정해진 동작들은, 외부 서버(140)에서의 외부 전자 서비스들뿐만 아니라, 외부 컨트롤러(110)에 대해 미리 정해진 로컬 기능 또는 전자 서비스와 로컬 기능의 조합에 대해 서비스 모듈(205)에 의해 제시되는 서비스들의 번들들 중에서의 선택을 포함한다. 예를 들면, TWEETING은 외부 서비스로서 선택될 수 있으며, 접속된 푸시-버튼으로부터의 입력(예를 들면, 2개의 핀들의 단락 회로)에 대한 대기는 로컬 기능일 수 있다. 따라서, 조합의 예는, 푸시 버튼이 눌릴 때마다 지정된 메시지를 트윗하는 것이다.
다음으로 단계 525에서, 사용자에 의해 입력되는 드롭다운 메뉴 또는 미리 정해진 필드를 사용하여 동작에 대한 파라미터 데이터가 수신된다. 추가적인 실시예는 IDE(118)에서의 다른 입력 인터페이스, 라디오 버튼, 체크 박스, 및 파일 첨부를 선택하는 것을 포함한다. 다른 실시예에서, 파라미터 데이터는 외부 데이터베이스로부터 검색된다. 프로그램을 생성하기 위한 변수 데이터로서 동작 데이터만을 수신함으로써, 원하는 동작 및 동작 파라미터만을 알 필요가 있으므로, 프로그래밍은 사용자 관점에서 시각적으로 단순화된다. 더 고급의 소프트웨어 개발자 또는 사용자는, 연관된 코딩 윈도우(240)에서 만들어진 엔트리들 및 선택에 대응하여 생성된 코드를 편집할 수 있다. 방법 500은 단계 530으로 계속된다.
단계 530에서, 선택된 동작에 대해 보통의 기본 동작(예를 들면, 전원, 클록, 통신, 메모리 등)에 대한 것들 외에, 외부 컨트롤러(110)의 각각의 핀에의 로컬 외부 연결이 있는지의 여부의 결정이 이루어진다. 추가적인 연결이 없는 것으로 결정되면, 방법 500은 단계 550으로 계속되어, 다른 동작이 AGCP에 삽입될지의 여부를 결정한다.
그러나, 선택된 동작에 대해 추가적인 연결이 이루어질 경우, 방법 500은 단계 535로 계속된다. 단계 535에서, 핀 레이아웃(210)에서 선택된 동작의 대응하는 핀들에 대해 핀들이 선택된다. 다음으로 단계 540에서, 선택된 동작에서 외부 컨트롤러(110)에 대한 핀을 나타내는 언어를 연관시킴으로써, 핀 선택이 동작에 할당된다. 예를 들면 입력을 위한 컨트롤러에서 핀(5)이 선택되면, 선택된 컨트롤러에 대한 커맨드는 "PIN IN 5"이고 선택된 동작에 대해 코딩 윈도우(345)에 삽입될 수 있다. 추가적인 실시예에서, 단계 540은 또한, 하나 이상의 동작이 외부 컨트롤러(110)의 핀의 사용을 요구할 경우와 같을 경우, 생성된 프로그램에서 다른 선택된 동작을 위해 핀 선택을 할당한다.
이어서, 방법 500은 단계 545로 계속되어, 필드로부터의 필요한 데이터 파라미터와 핀 선택 및 할당을 통합하여, 동작 호출을 종료한다. 예를 계속 들면, 선택된 핀을 삽입함으로써 프로세스 동작에 대해 "if then" 구문이 생성된다. 코딩 윈도우(240)에 샘플 코드가 "IF PIN IN 5 == 1 THEN Temboo.Tweet ('Little Red Button Pushed!')"로서 나타날 수 있다. 다른 실시예는, 선택된 동작이 많은 핀을 이용하는지의 여부에 따라, 보다 많은 핀 집합들을 포함할 수 있다. 방법은 550으로 계속된다.
단계 550에서, 방법 500은 추가적인 동작이 AGCP에 추가될지의 여부를 결정한다. 추가적인 동작이 추가될 경우, 방법 500은 단계 520으로 돌아간다. 그러나 추가적인 동작이 추가되지 않을 경우, 단계 555에서 동작(들) 및 동작 데이터가 패키징 또는 통합된다.
단계 555에서, 모든 동작들은 외부 컨트롤러(110)에의 저장 또는 플래싱을 위해 패키징된다. 패키징은, 파일들을, 선택된 컨트롤러에 의해 허용되는 네이티브 포맷으로 컴파일링 또는 변환하는 것을 포함한다. 추가적인 실시예들은, 원격 코딩 서버(135)에 액세스하기 위한 명령을 포함하는 헤더 파일들을 포함한다. 일부 실시예에서, 컴파일링되는 프로그램의 패키징시에, 프로그램 및 선택된 동작의 실행에 필요한 코드 라이브러리도 패키징된다. 예를 들면, 동작이 인터넷 연결을 필요로 할 경우, HTTP 또는 HTPPS 라이브러리가 포함되거나, 또는 동작에 멀티 스레딩이 필요할 경우, 서로 다른 라이브러리가 포함되어 선택된 컨트롤러에 대한 프로그램의 변환 전에 함께 컴파일링 및 링크된다.
단계 560에서, 생성된 프로그램이 외부 컨트롤러(110)에 저장 및 플래시된다. 단계 565에서, 컨트롤러는 외부 컨트롤러(110)에서 AGCP를 실행한다. 일부 실시예에서, AGCP의 실행은, 상술한 선택된 동작에 대응하는 프로세스들에 대한 원격 프로세스 호출을 포함한다. 프로세스들은 외부 컨트롤러(110)로부터 인터넷(154) 또는 다른 네트워크를 통해 원격 코딩 서버(135)에 전개된다. 또한, 여전히 원격 코딩 서버(135)에 의한 처리 후에, 외부 컨트롤러(110)에 네이티브인 언어로 응답 데이터를 반환하는 실시예들이다. 방법 500은 단계 570에서 종료된다.
도 6은 본 발명의 하나 이상의 실시예에 따른 도 2의 예시적인 GUI(200)를 통해 프로그래밍된 외부 컨트롤러(110)에 의한 원격 처리 호출에 대해 코딩 서버에 의해 행해지는 예시적인 방법 600의 흐름도이다.
방법 600은, 원격 코딩 서버(135)가 외부 서버(140)상의 외부 서비스로부터 데이터를 수신할 때 일어난다. 원격 코딩 서버(135)는 수신된 데이터를 처리하고, 이에 따라 원격 코딩 서버(135)에 저장된 프로그램에 의거하여 외부 컨트롤러(110)에 변환된 데이터를 반환한다. 일부 실시예에서, 저장된 프로그램은 외부 컨트롤러(110)상의 AGCP로 조정된다.
방법 600은 단계 605에서 시작되고 단계 610으로 계속되어, 외부 서버(140)는 인터넷으로부터 서비스 데이터를 수신하거나 원격 코딩 서버(135)상의 프로세스에 대응하는 데이터를 생성한다. 외부 서비스는 원격 코딩 서버(135)에 의해 사전 인증될 수 있다. 예를 들면, 이메일 서버가 새로운 이메일 메시지를 수신할 때마다 원격 코딩 서버(135)가 이메일 메일받은 편지함 알림을 체크/수신하기 위해 허가되어야만 하는 경우, AGCP는 외부 컨트롤러(110)에 연결된 LED를 점멸시킬 수 있다. 다른 실시예는, 또한 FACEBOOK 인증 크리덴션을 저장하는 것을 요구하는 Facebook 상태에 코멘트가 이루어지는 경우, LED를 점멸시킬 것이다. 단계 615에서, 외부 서버(140) 데이터는 알림을 원격 코딩 서버(135)(예를 들면, TEMBOO 서비스)에 송신한다.
단계 620에서, 원격 코딩 서버(135)는 외부 서버(140)로부터의 서비스 데이터를 수신한다. 단계 625에서, 원격 코딩 서버(135)는, 원격 코딩 서버(135)에 저장된 사용자 프로그램 및 프로그램 로직 라이브러리 내의 프로세스에 서비스 데이터를 매칭시킨다. 프로그램 로직 라이브러리는 미리 생성된 코드를 포함할 수 있다. 미리 생성된 코드는, 연관된 서비스(예를 들면, e-mail, FACEBOOK, 텍스트 메시지 등) 또는 로직 연산(예를 들면, count, if/then 조건문 등)에 따라 조직화된다. 예를 계속 들면, 프로세스는, GUI(200) 및 외부 컨트롤러(110)에 따라 저장된 프로그램에 따라 원격 코딩 서버(135)에 저장된 사용자 계정 또는 수신자 이메일 주소에 매칭되는 이메일 알림이다. 상술한 실시예에서, 사용자는 외부 서비스들로부터의 서비스 데이터에 대해 대기하는 원격 코딩 서버(135)에 저장되는 사용자 계정 또는 프로그램을 가질 수 있다.
단계 630에서, 변수들에 대한 파라미터 데이터가 프로그램 로직 라이브러리에 따른 서비스로부터 추출/파싱된다. 변수들에 대한 데이터, 또는 파라미터 데이터는, 추가 처리를 위해 미리 생성된 코드에의 삽입의 준비를 위해 필터링된다. 필터링 및 삽입은 프로그램에 지정된 동작들뿐만 아니라 코딩 구문(예를 들면, IF-THEN, 변수 형식, 방정식 등)의 미리 정해진 관계에 의거한다. 상술한 예를 계속하면, 이메일 알림 서비스 데이터는, 프로그램 로직 라이브러리에서의 미리 정해진 프로세스에 의해 필요로 하지 않는 수신 시간, 메시지 내용 등의 추가적인 정보를 포함할 수 있다.
단계 635에서, 런타임 엔진을 통해 프로그램 데이터를 생성하기 위해 프로그램과 연관되는 저장된 미리 생성된 프로세스들 및 기능들에 따라 추가적인 동작들을 실행함으로써, 파싱된 서비스 데이터에 의거하여 추가적인 처리가 행해진다. 프로그램은 원격 코딩 서버(135)에서의 방법 400 및 500으로 논의된 AGCP와 연관된다. 예를 들면, 프로그램 로직 라이브러리는 메시지들에 대해 다른 이메일 계정들을 동시에 체크하는 파라미터를 가질 수 있다.
단계 640에서, 원격 코딩 서버(135)는, 원격 코딩 서버(135)에 저장된 프로그램이 하나 이상의 외부 서버(140)(예를 들면, TWITTER, EBAY, 긴급 텍스트 알림 등)로부터 추가적인 서비스 데이터를 호출할 것인지의 여부를 결정한다. 결정되면, 프로그램은 추가적인 서비스 데이터를 요청하고, 방법 600은 단계 610으로 돌아간다. 그러나, 추가적인 서비스 데이터가 필요하지 않다고 결정되면, 방법 600은 단계 645로 진행한다.
단계 645에서, 단계 635에서의 프로그램 로직으로부터의 프로그램 데이터는 프로그램의 대상 컨트롤러에 대한 네이티브 언어 또는 신호로 변환된다. 대상 컨트롤러는, 프로그램에서 또는 사용자 계정 선호에 따라 지정된다. 단계 650에서, 변환된 프로그램 데이터는 외부 컨트롤러(110)에 전송된다. 데이터는 원격 코딩 서버(135)의 통신 회로를 사용하여 전송된다. 변환된 프로그램 데이터는, 더 효율적인 처리를 제공하는 외부 컨트롤러(110)에 의해 예상되는 및/또는 내부적으로 생성되는 데이터와는 실질적으로 구별할 수 없다.
단계 655에서, 외부 컨트롤러(110)는 변환된 프로그램 데이터를 수신한다. 변환된 프로그램 데이터는 네트워크, 인터넷, 또는 직접 연결을 통해 수신될 수 있다. 다음으로 단계 660에서, 변환된 프로그램 데이터가 외부 컨트롤러(110)에서 쉽게 처리된다. 단계 665에서, 외부 컨트롤러(110)는 메모리(115)에 저장된 명령을 실행한다. 일부 실시예에서, 저장된 명령은 변환된 데이터를 사용하는 AGCP에 대응한다. 이어서, 방법 600은 단계 670에서 종료된다.
도 7은 본 발명의 하나 이상의 실시예에 따른 예시적인 컴퓨팅 시스템(700) 내의 모듈들의 블록도이다. 컴퓨터 시스템은, 상술한 실시예에서의 서버 또는 전자 장치를 포함하는 실질적으로 마찬가지인 구조를 포함한다.
자동 전자 장치 프로그램 생성을 위한 방법 및 장치의 다양한 실시예. 하나의 이러한 컴퓨터 시스템은, 다양한 실시예에서, 도 1 내지 도 6에 나타난 요소 또는 기능 중 어느 것을 실시할 수 있는 도 1에 의해 나타난 시스템(100)이다. 다양한 실시예에서, 컴퓨터 시스템(700)은 상술한 방법을 실시하도록 구성될 수 있다. 컴퓨터 시스템(700)은 상술한 실시예들의 임의의 다른 시스템, 장치, 요소, 기능 또는 방법을 실시하는 데 사용될 수 있다. 예시된 실시예에서, 컴퓨터 시스템(700)은 다양한 실시예에서 프로세서 실행 가능한 실행 프로그램 명령(722)(예를 들면, 프로세서(들)(710)에 의해 실행 가능한 프로그램 명령)으로서 방법 400, 500, 및 600을 실시하도록 구성될 수 있다.
도시된 실시예에서, 컴퓨터 시스템(700)은 입력/출력(I/O) 인터페이스(730)를 통해 시스템 메모리(720)에 연결된 하나 이상의 프로세서(710a-710n)를 포함한다. 컴퓨터 시스템(700)은, 커서 제어 장치(760), 키보드(770), 및 디스플레이(들)(780) 등의 하나 이상의 입력/출력 장치(750) 및 I/O 인터페이스(730)에 연결된 네트워크 인터페이스(740)를 더 포함한다. 일부 실시예에서, 키보드(770)는 터치스크린 입력 장치일 수 있다.
다양한 실시예에서, 구성 요소 중 어느 것은 시스템에 의해 상술한 펌웨어를 가상화하는 데 사용될 수 있다. 다양한 실시예에서, 사용자 인터페이스가 생성되어 디스플레이(780)에 표시될 수 있다. 일부 경우에, 실시예들이 컴퓨터 시스템(700)의 단일 인스턴스를 사용하여 구현되는 한편, 다른 실시예에서, 다수의 이러한 시스템들, 또는 컴퓨터 시스템(700)을 만드는 다수의 노드들이 다양한 실시예들의 서로 다른 부분들 또는 인스턴스들을 호스팅하도록 구성될 수 있다. 예를 들면, 일 실시예에서, 일부 요소는, 다른 요소를 구현하는 해당 노드들과 구별되는 컴퓨터 시스템(700)의 하나 이상의 노드들을 통해 구현될 수 있다. 또 다른 예에서, 다수의 노드가 분산 방식으로 컴퓨터 시스템(700)을 구현할 수 있다.
다른 실시예에서, 컴퓨터 시스템(700)은, 제한이 아닌 예시로, 개인용 컴퓨터 시스템, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 애플리케이션 서버, 저장 장치, 스위치, 모뎀, 라우터 등의 주변 장치, 또는 일반적으로 임의의 타입의 컴퓨팅 또는 전자 장치를 포함하는 다양한 타입의 장치의 어느 것일 수 있다.
다양한 실시예에서, 컴퓨터 시스템(700)은, 하나의 프로세서(710)를 포함하는 유니프로세서 시스템, 또는 복수의(예를 들면, 2개, 4개, 8개, 또는 다른 적절한 수) 프로세서(710)를 포함하는 멀티프로세스 시스템일 수 있다. 하나의 프로세서(710)를 포함하는 유니프로세서 시스템은 단일 프로세서의 기능을 나눠, 프로그램을 동시 데이터 처리 및 실행하는 다수의 프로세서로서 나타날 수 있다. 프로세서(710)는, 명령을 실행할 수 있는 임의의 적절한 프로세서일 수 있다. 예를 들면, 다양한 실시예에서, 프로세서(710)는, 다양한 명령 세트 아키텍처(ISA)의 어느 것을 실시하는 범용 또는 임베디드 프로세서일 수 있다. 멀티프로세서 시스템에서, 프로세서(710) 각각은 반드시 그런 것은 아니지만, 일반적으로 동일한 ISA를 실시할 수 있다.
시스템 메모리(720)는, 프로세서(710)에 의해 액세스 가능한 프로그램 명령(722), 펌웨어(733), 및/또는 데이터(732)를 저장하도록 구성될 수 있다. 다양한 실시예에서, 시스템 메모리(720)는, SRAM(static random access memory), SDRAM(synchronous dynamic RAM), 비휘발성/플래시 타입 메모리 또는 임의의 다른 타입의 메모리 등의 임의의 적절한 메모리 기술을 이용하여 실시될 수 있다. 예시한 실시예에서, 상술한 실시예들의 요소 중의 어느 것을 실시하는 프로그램 명령 및 데이터가 시스템 메모리(720)에 저장될 수 있다. 다른 실시예에서, 프로그램 명령 및/또는 데이터는, 다른 타입들의 컴퓨터 액세스 가능한 매체 또는 시스템 메모리(720) 또는 컴퓨터 시스템(700)과 별개인 마찬가지인 매체에 수신, 송신 또는 저장될 수 있다.
일 실시예에서, I/O 인터페이스(730)는, 프로세서(710), 시스템 메모리(720), 및 네트워크 인터페이스(740) 또는 입력/출력 장치(750) 등의 다른 주변 인터페이스를 포함하는 장치 내의 임의의 주변 장치들 사이에서 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시예에서, I/O 인터페이스(730)는 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환을 행해서, 하나의 구성 요소(예를 들면, 시스템 메모리(720))로부터의 데이터 신호를 다른 구성 요소(예를 들면, 프로세서(710))에 의한 사용에 적합한 포맷으로 변환할 수 있다. 일부 실시예에서, I/O 인터페이스(730)는, 예를 들면 PCI(Peripheral Component Interconnect) 버스 규격 또는 범용 직렬 버스(USB) 규격의 변종 등 다양한 타입의 주변 버스를 통해 접속된 장치들에 대한 지원을 포함할 수 있다. 일부 실시예에서, I/O 인터페이스(730)의 기능은 예를 들면, 노스 브릿지 및 사우스 브릿지 등의 2개 이상의 개별 구성 요소들로 나뉠 수 있다. 또한, 일부 실시예에서, 시스템 메모리(720)에 대한 인터페이스 등의 I/O 인터페이스(730)의 기능의 일부 또는 전부가 프로세서(710)에 직접 통합될 수 있다.
네트워크 인터페이스(740)는, 하나 이상의 외부 시스템 등의 네트워크(예를 들면, 네트워크(790))에 접속된 다른 장치들과 컴퓨터 시스템(700) 사이에서, 또는 컴퓨터 시스템(700)의 노드들간에 데이터가 교환 가능하게 구성될 수 있다. 다양한 실시예에서, 네트워크(790)는, 제한이 아닌 예로, LAN(Local Area Network)(예를 들면, 이더넷 또는 기업 네트워크), WAN(Wide Area Network)(예를 들면, 인터넷), 무선 데이터 네트워크, 셀룰러 네트워크, Wi-Fi, 어느 다른 전자 데이터 네트워크, 또는 그 어떤 조합을 포함하는 하나 이상의 네트워크를 포함할 수 있다. 다양한 실시예에서, 네트워크 인터페이스(740)는, 예를 들면, 임의의 적절한 유형의 이더넷 네트워크 등의 유선 또는 무선의 일반적인 데이터 네트워크를 통해, 아날로그 음성 네트워크 또는 디지털 파이버 통신 네트워크 등의 통신/전화 네트워크를 통해, Fibre Channel SAN 등의 스토리지 에어리어 네트워크를 통해, 또는 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통해 통신을 지원할 수 있다.
입력/출력 장치(750)는 일부 실시예에서, 디스플레이 단말기, 키보드, 키패드, 터치패드, 터치스크린, 스캐닝 장치, 음성 또는 광학 인식 장치, 또는 하나 이상의 컴퓨터 시스템(700)에 의한 데이터의 입력 및 액세스에 적절한 임의의 다른 장치를 하나 이상 포함할 수 있다. 다수의 입력/출력 장치(750)가 컴퓨터 시스템(700)에 존재해도 되고, 또는 컴퓨터 시스템(700)의 다양한 노드들에 분산되어도 된다. 일부 실시예에서, 유사한 입력/출력 장치가 컴퓨터 시스템(700)과 별개로 있을 수 있고, 네트워크 인터페이스(740) 등의 유선 또는 무선 연결을 통해 컴퓨터 시스템(700)의 하나 이상의 노드들과 상호 작용할 수 있다.
일부 실시예에서, 예시된 컴퓨터 시스템은 도 3 내지 도 5의 플로우도에 의해 예시된 방법 등 상술한 방법의 어느 것을 실시할 수 있다. 다른 실시예에서, 서로 다른 요소 및 데이터가 포함될 수 있다.
통상의 기술자는, 컴퓨터 시스템(700)이 단순한 예시이며 실시예의 범위를 한정하고자 함이 아님을 이해할 것이다. 특히, 컴퓨터 시스템 및 장치는, 컴퓨터, 네트워크 장치, 인터넷 기기, 스마트폰, 태블릿, PDA, 무선 전화, 호출기 등을 포함하는 다양한 실시예의 예시된 기능을 행할 수 있는 하드웨어 또는 소프트웨어의 임의의 조합을 포함할 수 있다. 컴퓨터 시스템(700)은 또한, 도시되어 있지 않은 다른 장치에 연결되거나, 대신 독립형 시스템으로서 동작할 수도 있다. 또한, 일부 실시예에서, 예시된 구성 요소에 의해 제공되는 기능은 몇몇 구성 요소로 조합되거나, 추가적인 구성 요소로 분산될 수 있다. 마찬가지로, 일부 실시예에서, 도시된 구성 요소의 어떤 기능은 제공되지 않거나, 및/또는 다른 추가적인 기능이 이용 가능할 수 있다.
다양한 아이템이 사용과 함께 메모리 또는 스토리지에 저장되는 것으로 나타나 있지만, 이들 아이템 또는 그 일부가 메모리 관리 및 데이터 무결성을 목적으로 메모리와 다른 저장 장치 간에 전송될 수 있음을, 통상의 기술자는 또한 이해할 것이다. 또는, 다른 실시예에서, 소프트웨어 구성 요소의 일부 또는 전부는 다른 장치의 메모리에서 실행되어도 되고, 컴퓨터 간 통신을 통해 예시된 컴퓨터 시스템과 통신할 수 있다. 시스템 구성 요소 또는 데이터 구조의 일부 또는 전부는 컴퓨터 액세스 가능한 매체 또는 휴대용 제품에 (예를 들면, 명령 또는 구조화된 데이터로서) 저장되어, 상술한 다양한 예의 적절한 드라이브에 의해 판독될 수 있다. 일부 실시예에서, 컴퓨터 시스템(700)과는 별개인 컴퓨터 액세스 가능한 매체에 저장된 명령은, 네트워크 및/또는 무선 링크 등의 통신 매체를 통해 전달되는 전기, 전자기, 또는 디지털 신호 등의 전송 매체 또는 신호를 통해 컴퓨터 시스템(700)에 전송될 수 있다. 다양한 실시예는, 컴퓨터 액세스 가능한 매체에서 또는 통신 매체를 통해 전술한 설명에 따라 실시되는 명령 및/또는 데이터를 수신, 송신 또는 저장하는 것을 더 포함할 수 있다. 일반적으로, 컴퓨터 액세스 가능한 매체는, 예를 들면, 디스크 또는 DVD/CD-ROM 등의 자기 또는 광학 매체, RAM(예를 들면, SDRAM, DDR, RDRAM, SRAM 등), ROM 등의 휘발성 또는 비휘발성 매체 등의 저장 매체 또는 메모리 매체를 포함할 수 있다.
본원에서 기술하는 방법은 다른 실시예에서, 소프트웨어, 하드웨어, 또는 그 조합으로 실시되어도 된다. 또한, 방법의 순서는 변경될 수 있으며, 다양한 요소가 추가, 재정렬, 조합, 생략 또는 다른 방식으로 변경될 수 있다. 본원에서 기술하는 모든 예는 제한으로서 제시되는 것이 아니다. 다양한 변형 및 변경이 본 발명의 이점을 갖는 본 기술 분야의 통상의 기술자에게 명확한 바와 같이 이루어질 수 있다. 실시예에 따른 실현이 특정 실시예의 맥락에서 설명되어 있다. 이러한 실시예는 예시이며 제한을 의도하고 있지 있다. 많은 변형, 변경, 추가 및 개선이 가능하다. 따라서, 본원에서 설명되는 구성 요소들에 대해 복수의 인스턴스가 단일 인스턴스로서 마련될 수도 있다. 다양한 구성 요소, 동작 및 데이터 저장소 사이의 경계는 다소 임의적이며, 특정 동작이 특정 예시적인 구성의 맥락에서 예시된다. 다른 기능의 할당이 예상되며 다음의 청구범위에 포함될 수 있다. 마지막으로, 예시적인 구성에서 이산된 구성 요소로서 제시된 구조 및 기능이 결합 구조 또는 구성 요소로서 실시될 수 있다. 이들 및 다른 변형, 변경, 추가 및 개선은 다음의 청구범위에서 정의되는 바와 같이 실시예의 범위 내에 포함될 수 있다.
전술한 것은 본 발명의 실시예에 대한 것이며, 본 발명의 다른 및 추가적인 실시예가 그 기본적인 범주에서 벗어나지 않고 고안될 수 있으며, 그 범주는 다음의 청구범위에 의해 결정된다.
Claims (15)
- 장치 프로그램의 자동 생성을 위한 컴퓨터 구현 방법으로서,
사용자 장치의 GUI(graphical user interface)에 표시되는 복수의 물리적 컨트롤러들의 각각의 사용자 상호작용 시각적 표현 중에서 물리적 컨트롤러를 선택하는 단계 - 상기 선택된 물리적 컨트롤러는 상기 사용자 장치의 외부에 있으며 상기 사용자 장치에 통신가능하게 연결됨 -;
상기 GUI에서, 상기 외부의 물리적 컨트롤러에 대한 적어도 하나의 핀을 포함하는 사용자 상호작용 핀 레이아웃을 생성하는 단계;
상기 GUI에서, 상기 외부의 물리적 컨트롤러에 의한 실행을 위한 복수의 동작들을 표시하는 단계;
상기 GUI에서, 상기 외부의 물리적 컨트롤러에 의한 실행을 위한 복수의 동작들 중에서 동작을 선택하는 단계 - 상기 동작은 상기 외부의 물리적 컨트롤러로부터 원격 장치로 개시되는 적어도 하나의 원격 호출을 포함하고, 상기 원격 장치는 상기 사용자 장치 및 상기 외부의 물리적 컨트롤러로부터 원격 상태임 -;
상기 GUI에서, 상기 사용자 상호작용 핀 레이아웃으로부터 핀을 선택하는 단계;
상기 GUI에서, 상기 GUI에서의 적어도 하나의 데이터 입력 필드 또는 외부의 데이터베이스로부터 상기 동작에 대한 파라미터 데이터를 수신하는 단계;
상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀을 상기 수신된 동작에 대한 파라미터 데이터에 연관시키는 단계;
상기 사용자 장치에서, 상기 사용자 상호작용 핀 레이아웃, 상기 수신된 동작에 대한 파라미터 데이터, 및 상기 동작에 기초하여 상기 외부의 물리적 컨트롤러에 대한 장치 프로그램을 자동으로 생성하는 단계 - 상기 장치 프로그램은 상기 적어도 하나의 원격 호출을 포함함 -;
상기 사용자 장치로부터, 상기 외부의 물리적 컨트롤러의 메모리에의 저장 및 상기 외부의 물리적 컨트롤러 상의 실행을 위해 상기 장치 프로그램을 송신하는 단계를 포함하는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀을 상기 수신된 동작에 대한 파라미터 데이터에 연관시키는 단계는, 상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀에 적어도 하나의 변수를 할당하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 사용자 상호작용 핀 레이아웃에서 상기 외부의 물리적 컨트롤러에 대한 적어도 하나의 핀은, 상기 사용자 상호작용 핀 레이아웃에서 선택되지 않은 핀 또는 핀들 중에서 강조 표시되는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 동작은 상기 외부의 물리적 컨트롤러에 의한 실행을 위해 복수의 작업들 중에서 선택되는 미리 정의된 작업인, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀을 상기 수신된 동작에 대한 파라미터 데이터에 연관시키는 단계는,
상기 핀이 다른 동작과 사전에 연관되어 있음을 결정하는 단계; 및
당해 연관의 알림을 생성하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 GUI는, 선택 및 상기 외부의 물리적 컨트롤러의 적어도 하나의 핀과의 연관을 위해, 적어도 하나의 주변 장치를 표시하는 것을 더 포함하는, 컴퓨터 구현 방법. - 제 6 항에 있어서,
상기 적어도 하나의 주변 장치는, 센서, 안테나, 입력 장치, 발광 소자, 디스플레이, 또는 스피커 중 적어도 하나인, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 적어도 하나의 원격 호출은, 상기 사용자 상호작용 핀 레이아웃으로부터의 핀으로부터 생성되는 데이터를 수신하도록 구성되는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 장치 프로그램을 송신하는 단계는, 상기 장치 프로그램을 상기 외부의 물리적 컨트롤러의 네이티브(native) 언어로 변환하는 단계를 더 포함하는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 외부의 물리적 컨트롤러는 상기 적어도 하나의 원격 호출을 사용하여 외부의 서버에 의해 제공되는 원격 서비스를 이용할 수 있는, 컴퓨터 구현 방법. - 적어도 하나의 프로세서에 의해 실행될 때 상기 적어도 하나의 프로세서로 하여금 방법을 수행하게 하는, 장치 프로그램의 자동 생성을 위한 컴퓨터 명령들을 저장하는 비일시적 컴퓨터 판독 가능 매체로서, 상기 방법은,
상기 적어도 하나의 프로세서를 포함하는 사용자 장치의 GUI(graphical user interface)에 표시되는 복수의 물리적 컨트롤러들의 각각의 사용자 상호작용 시각적 표현 중에서 물리적 컨트롤러를 선택하는 단계 - 상기 선택된 물리적 컨트롤러는 상기 사용자 장치의 외부에 있으며 상기 사용자 장치에 통신가능하게 연결됨 -;
상기 GUI에서, 상기 외부의 물리적 컨트롤러에 대한 적어도 하나의 핀을 포함하는 사용자 상호작용 핀 레이아웃을 생성하는 단계;
상기 GUI에서, 상기 외부의 물리적 컨트롤러에 의한 실행을 위한 복수의 동작들을 표시하는 단계;
상기 GUI에서, 상기 외부의 물리적 컨트롤러에 의한 실행을 위한 복수의 동작들 중에서 동작을 선택하는 단계 - 상기 동작은 상기 외부의 물리적 컨트롤러로부터 원격 장치로 개시되는 적어도 하나의 원격 호출을 포함하고, 상기 원격 장치는 상기 사용자 장치 및 상기 외부의 물리적 컨트롤러로부터 원격 상태임 -;
상기 GUI에서, 상기 사용자 상호작용 핀 레이아웃으로부터 핀을 선택하는 단계;
상기 GUI에서, 상기 GUI에서의 적어도 하나의 데이터 입력 필드 또는 외부의 데이터베이스로부터 상기 동작에 대한 파라미터 데이터를 수신하는 단계;
상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀을 상기 수신된 동작에 대한 파라미터 데이터에 연관시키는 단계;
상기 사용자 장치에서, 상기 사용자 상호작용 핀 레이아웃, 상기 수신된 동작에 대한 파라미터 데이터, 및 상기 동작에 기초하여 상기 외부의 물리적 컨트롤러에 대한 장치 프로그램을 자동으로 생성하는 단계 - 상기 장치 프로그램은 상기 적어도 하나의 원격 호출을 포함함 -;
상기 사용자 장치로부터, 상기 외부의 물리적 컨트롤러의 메모리에의 저장 및 상기 외부의 물리적 컨트롤러 상의 실행을 위해 상기 장치 프로그램을 송신하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체. - 제 11 항에 있어서,
상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀을 상기 수신된 동작에 대한 파라미터 데이터에 연관시키는 단계는, 상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀에 적어도 하나의 변수를 할당하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체. - 제 11 항에 있어서,
상기 사용자 상호작용 핀 레이아웃에서 상기 외부의 물리적 컨트롤러에 대한 적어도 하나의 핀은, 상기 사용자 상호작용 핀 레이아웃에서 선택되지 않은 핀 또는 핀들 중에서 강조 표시되는, 비일시적 컴퓨터 판독 가능 매체. - 제 11 항에 있어서,
상기 동작은 상기 외부의 물리적 컨트롤러에 의한 실행을 위해 복수의 작업들 중에서 선택되는 미리 정의된 작업인, 비일시적 컴퓨터 판독 가능 매체. - 제 11 항에 있어서,
상기 사용자 상호작용 핀 레이아웃으로부터의 상기 핀을 상기 수신된 동작에 대한 파라미터 데이터에 연관시키는 단계는,
상기 핀이 다른 동작과 사전에 연관되어 있음을 결정하는 단계; 및
당해 연관의 알림을 생성하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461926168P | 2014-01-10 | 2014-01-10 | |
US61/926,168 | 2014-01-10 | ||
PCT/US2015/010562 WO2015105936A1 (en) | 2014-01-10 | 2015-01-08 | Method and apparatus for automatic device program generation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160108306A KR20160108306A (ko) | 2016-09-19 |
KR102304698B1 true KR102304698B1 (ko) | 2021-09-28 |
Family
ID=53521381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167015057A KR102304698B1 (ko) | 2014-01-10 | 2015-01-08 | 자동 장치 프로그램 생성을 위한 방법 및 장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9619112B2 (ko) |
EP (1) | EP3092561A4 (ko) |
JP (1) | JP6581097B2 (ko) |
KR (1) | KR102304698B1 (ko) |
CN (1) | CN106170764B (ko) |
CA (1) | CA2931512C (ko) |
SG (1) | SG11201605563YA (ko) |
WO (1) | WO2015105936A1 (ko) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10997531B2 (en) | 2007-09-11 | 2021-05-04 | Ciambella Ltd. | System, method and graphical user interface for workflow generation, deployment and/or execution |
US9959103B2 (en) * | 2010-11-19 | 2018-05-01 | Microsoft Technology Licensing, Llc | Code deployment assistance |
WO2014204989A1 (en) | 2013-06-18 | 2014-12-24 | Ciambella Ltd. | Method and apparatus for code virtualization and remote process call generation |
CN108604186B (zh) * | 2015-12-21 | 2021-11-16 | 西安姆贝拉有限公司 | 用于创建和管理基于控制器的远程解决方案的方法和装置 |
US11087249B2 (en) | 2016-05-24 | 2021-08-10 | Ciambella Ltd. | Method and apparatus for triggering execution of a workflow over a network |
US10798780B2 (en) | 2016-08-22 | 2020-10-06 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
CA3034838A1 (en) * | 2016-08-22 | 2018-03-01 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
CN108259199B (zh) * | 2016-12-29 | 2020-04-21 | 大唐移动通信设备有限公司 | 一种自动化命令生成方法及装置 |
CN110419024A (zh) | 2017-03-14 | 2019-11-05 | 西安姆贝拉有限公司 | 用于在开发环境中自动生成和合并代码的方法和设备 |
US10592370B2 (en) * | 2017-04-28 | 2020-03-17 | Advantest Corporation | User control of automated test features with software application programming interface (API) |
EP3460594A1 (en) * | 2017-09-26 | 2019-03-27 | Vestel Elektronik Sanayi ve Ticaret A.S. | Systems and methods for controlling operation of a home appliance |
US10664636B2 (en) * | 2017-12-20 | 2020-05-26 | International Business Machines Corporation | Pin number definition based analytics |
US10264122B1 (en) * | 2018-05-31 | 2019-04-16 | RapdiDeploy, Inc. | Emergency data gateway device |
KR102098635B1 (ko) * | 2018-06-20 | 2020-04-08 | 주식회사 리젠어스 | 기록매체에 저장된 프로그래밍 어플리케이션, 이를 포함하는 프로그래밍 시스템 및 이를 이용한 마이크로 콘트롤러 유닛의 프로그래밍 방법 |
KR101993858B1 (ko) * | 2018-10-05 | 2019-06-27 | 주식회사 엔터핀 | 프로그램 개발 시스템 및 이를 이용한 개발 방법 |
CN109740282A (zh) * | 2019-01-16 | 2019-05-10 | 杭州嘉楠耘智信息科技有限公司 | 一种芯片引脚配置方法及装置、设备、介质 |
KR102131918B1 (ko) * | 2019-04-19 | 2020-07-08 | 주식회사 엔터핀 | 소프트웨어 개발 시스템 및 방법 |
DE102020118563A1 (de) * | 2019-07-17 | 2021-01-21 | Steering Solutions Ip Holding Corporation | Middleware-system und -verfahren |
US11405768B2 (en) | 2019-10-16 | 2022-08-02 | RapidDeploy, Inc. | Data relay for multi-tenant emergency call system |
CN111427567B (zh) * | 2020-03-20 | 2023-08-18 | 杭州涂鸦信息技术有限公司 | 一种智能产品快速生成方法及其系统和设备 |
KR102185289B1 (ko) * | 2020-05-07 | 2020-12-01 | 주식회사 엔터핀 | 소프트웨어 개발 시스템 및 방법 |
KR102185292B1 (ko) * | 2020-05-07 | 2020-12-01 | 주식회사 엔터핀 | 소프트웨어 개발 시스템 및 방법 |
KR102185291B1 (ko) * | 2020-05-07 | 2020-12-01 | 주식회사 엔터핀 | 소프트웨어 개발 시스템 및 방법 |
KR102185290B1 (ko) * | 2020-05-07 | 2020-12-01 | 주식회사 엔터핀 | 소프트웨어 개발 시스템 및 방법 |
US11553618B2 (en) * | 2020-08-26 | 2023-01-10 | PassiveLogic, Inc. | Methods and systems of building automation state load and user preference via network systems activity |
US20220334836A1 (en) * | 2021-04-15 | 2022-10-20 | Dell Products L.P. | Sharing of computing resources between computing processes of an information handling system |
KR102347203B1 (ko) * | 2021-11-24 | 2022-01-03 | 조동건 | 개체-관계 다이어그램 정보에 기초한 프로그램 코드 자동 생성 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040034842A1 (en) * | 2001-07-24 | 2004-02-19 | Mantey Paul John | Systems and methods for ensuring correct connectivity between circuit designs |
US20050114644A1 (en) * | 2003-11-25 | 2005-05-26 | Microsoft Corporation | Deterministic system and method for implementing software distributed between a desktop and a remote device |
US20070174037A1 (en) * | 2005-11-10 | 2007-07-26 | Chuan-Po Ling | Multiple-microcontroller emulation system, multiple-microcontroller integrated development environment, and method for the same |
US20080040093A1 (en) * | 2006-05-03 | 2008-02-14 | Sony Computer Entertainment Inc. | Register mapping in emulation of a target system on a host system |
US20120022674A1 (en) * | 2007-12-13 | 2012-01-26 | Yun Peng Choo | Application specific virtual real-time operating system compiler |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852733A (en) * | 1996-12-16 | 1998-12-22 | Chien; Yung-Ping S. | Microcontroller development tool using software programs |
WO1998040817A1 (fr) * | 1997-03-11 | 1998-09-17 | Mitsubishi Denki Kabushiki Kaisha | Methode et systeme de programmation visuelle |
US6065053A (en) * | 1997-10-01 | 2000-05-16 | Micron Electronics, Inc. | System for resetting a server |
US6401156B1 (en) * | 1999-08-23 | 2002-06-04 | Advanced Micro Devices, Inc. | Flexible PC/AT-compatible microcontroller |
US8176296B2 (en) * | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US6931288B1 (en) * | 2001-04-16 | 2005-08-16 | Rockwell Automation Technologies, Inc. | User interface and system for creating function block diagrams |
US8131827B2 (en) * | 2001-05-09 | 2012-03-06 | Rockwell Automation Technologies, Inc. | PLC with web-accessible program development software |
US7143360B1 (en) * | 2001-10-29 | 2006-11-28 | Cypress Semiconductor Corporation | Pin-out connections/drive levels direct-set by drop down list |
US8078970B1 (en) * | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US7086014B1 (en) * | 2001-11-19 | 2006-08-01 | Cypress Semiconductor Corporation | Automatic generation of application program interfaces, source code, interrupts, and datasheets for microcontroller programming |
US7010773B1 (en) * | 2001-11-19 | 2006-03-07 | Cypress Semiconductor Corp. | Method for designing a circuit for programmable microcontrollers |
US6715132B1 (en) * | 2001-11-19 | 2004-03-30 | Cypress Semiconductor Corporation | Datasheet browsing and creation with data-driven datasheet tabs within a microcontroller design tool |
US6966039B1 (en) * | 2001-11-19 | 2005-11-15 | Cypress Semiconductor Corp. | Method for facilitating microcontroller programming |
GB2411495A (en) * | 2004-02-27 | 2005-08-31 | Cyan Holdings Ltd | Method and apparatus for generating configuration data |
US20060041854A1 (en) * | 2004-07-22 | 2006-02-23 | Steven Schlanger | Devices and methods for programming microcontrollers |
US20060020910A1 (en) * | 2004-07-22 | 2006-01-26 | Steven Schlanger | Devices and methods for communicating with a microcontroller |
JP2006079447A (ja) * | 2004-09-10 | 2006-03-23 | Fujitsu Ltd | 集積回路設計支援装置、集積回路設計支援方法及び集積回路設計支援プログラム |
US8028258B1 (en) * | 2006-02-16 | 2011-09-27 | Cypress Semiconductor Corporation | Interactive graphical pin assignment |
US7627838B2 (en) * | 2006-04-25 | 2009-12-01 | Cypress Semiconductor Corporation | Automated integrated circuit development |
US7886234B2 (en) * | 2006-10-13 | 2011-02-08 | Mediatek Inc. | Systems and methods for creating embedded target images |
US20080109782A1 (en) * | 2006-10-18 | 2008-05-08 | Utstarcom, Inc. | Method and system for pin assignment |
CN201017215Y (zh) * | 2007-03-29 | 2008-02-06 | 王忠伟 | 一种终端控制器 |
US8099694B1 (en) * | 2009-04-15 | 2012-01-17 | Altera Corporation | Interactive tool for contemporaneous design of integrated circuits having different device packages |
CN102422263B (zh) * | 2009-05-07 | 2016-03-30 | 赛普拉斯半导体公司 | 开发、编程和除错环境 |
CN102999322A (zh) * | 2011-09-16 | 2013-03-27 | 深圳市吉阳自动化科技有限公司 | 一种工业控制器软件界面设计方法 |
KR20130115729A (ko) * | 2012-04-13 | 2013-10-22 | 삼성전자주식회사 | 디스플레이장치, 리모컨 및 그 제어방법 |
-
2015
- 2015-01-08 SG SG11201605563YA patent/SG11201605563YA/en unknown
- 2015-01-08 JP JP2016545976A patent/JP6581097B2/ja active Active
- 2015-01-08 EP EP15735508.2A patent/EP3092561A4/en not_active Withdrawn
- 2015-01-08 KR KR1020167015057A patent/KR102304698B1/ko active IP Right Grant
- 2015-01-08 CN CN201580003781.2A patent/CN106170764B/zh active Active
- 2015-01-08 CA CA2931512A patent/CA2931512C/en active Active
- 2015-01-08 WO PCT/US2015/010562 patent/WO2015105936A1/en active Application Filing
- 2015-01-09 US US14/593,151 patent/US9619112B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040034842A1 (en) * | 2001-07-24 | 2004-02-19 | Mantey Paul John | Systems and methods for ensuring correct connectivity between circuit designs |
US20050114644A1 (en) * | 2003-11-25 | 2005-05-26 | Microsoft Corporation | Deterministic system and method for implementing software distributed between a desktop and a remote device |
US20070174037A1 (en) * | 2005-11-10 | 2007-07-26 | Chuan-Po Ling | Multiple-microcontroller emulation system, multiple-microcontroller integrated development environment, and method for the same |
US20080040093A1 (en) * | 2006-05-03 | 2008-02-14 | Sony Computer Entertainment Inc. | Register mapping in emulation of a target system on a host system |
US20120022674A1 (en) * | 2007-12-13 | 2012-01-26 | Yun Peng Choo | Application specific virtual real-time operating system compiler |
Also Published As
Publication number | Publication date |
---|---|
US20150199088A1 (en) | 2015-07-16 |
EP3092561A4 (en) | 2017-11-22 |
CN106170764A (zh) | 2016-11-30 |
WO2015105936A1 (en) | 2015-07-16 |
CA2931512C (en) | 2020-12-08 |
SG11201605563YA (en) | 2016-08-30 |
JP6581097B2 (ja) | 2019-09-25 |
CN106170764B (zh) | 2019-12-10 |
US9619112B2 (en) | 2017-04-11 |
CA2931512A1 (en) | 2015-07-16 |
KR20160108306A (ko) | 2016-09-19 |
JP2017502431A (ja) | 2017-01-19 |
EP3092561A1 (en) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102304698B1 (ko) | 자동 장치 프로그램 생성을 위한 방법 및 장치 | |
US9619122B2 (en) | Method and apparatus for automatic device program generation | |
KR102622652B1 (ko) | 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치 | |
US20220043637A1 (en) | Providing communication between a client system and a process-based software application | |
JP6464162B2 (ja) | ファームウェア仮想化のための方法および装置 | |
CN105337787A (zh) | 一种多服务器监控方法、装置和系统 | |
JP2022041907A (ja) | コンピューティングシステム上のapiマッシュアップインフラストラクチャ生成 | |
US11005719B2 (en) | Internet of Things system topology generation | |
CN103595770A (zh) | Sdk实现文件下载的方法与装置 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
WO2023169193A1 (zh) | 用于生成智能合约的方法和装置 | |
US20220342742A1 (en) | Graphical management of big data pipelines | |
CN113760727A (zh) | 一种接口回归测试方法和装置 | |
CN104572441A (zh) | 移动应用功能测试的环境搭建方法、装置、服务器及系统 | |
CN107851009B (zh) | 用于修改基于控制器的设备的代码的行为的方法和装置 | |
CN114466048B (zh) | 用于物联网平台间的数据流转的方法、装置和存储介质 | |
CN114356451A (zh) | 应用执行方法、应用执行装置、设备及存储介质 | |
CN118796313A (zh) | 调用目标原生功能的方法、装置和设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |