실패...


from machine import Pin, I2C

i2c = I2C(Pin(5), Pin(4))


그다음


i2c.scan( )


으로 연결된 아두이노의 주소가 검색이 안된다.

원인을 못 찾았음..

Posted by 살레시오
,

Introduction

 The ESPyHarp is a simple IDE for developing MicroPython program. It’s target board is ESP8266 based boards (e.g. NodeMCU) with MicroPython firmware. I like both ESP8266 and MicroPython. However, I had found the fact that there is no useful development tool (or IDE). So, I started to develop IDE for  personal use and named it ESPyHarp. It is written using JavaFX and an open source libraries such as RichTextFX, jSSC, etc. You can see or download the source code in github.com page.



Features

  • embedded REPL

  • files list in the device

  • code editor with python keyword and builtins highlight

  • upload and/or execute  python script

Requirements

 You need JVM(Java Virtual Machine) on your PC to run ESPyHarp. Then, download the released file below and execute ESPyHarp.jar file. On Windows you can run the jar file just double clicking on it. At this moment, I have tested only on Windows 7 PC.

Releases

ESPyHarp ver 0.1.1 (03/Oct/2016) : minor REPL bug fix

ESPyHarp ver 0.1.0 (01/Oct/2016) : initial release


c{espy}n{espy006}


Posted by 살레시오
,

  JavaFX 8u40 버전에 간단한 대화창/경고창 클래스들이 추가되었다.(참조) 예를 들어 경고창은 다음과 같이 간단히 생성할 수 있다.


Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("Warning Dialog");
alert.setHeaderText("Look, a Warning Dialog");
alert.setContentText("Careful with the next step!");

alert.showAndWait();


동일한 Alert객체로 확인창도 생성할 수 있다.


Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Confirmation Dialog");
alert.setHeaderText("Look, a Confirmation Dialog");
alert.setContentText("Are you ok with this?");

Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.OK){
   // ... user chose OK
} else {
   // ... user chose CANCEL or closed the dialog
}


또는 간단한 문자열 입력기도 다음과 같이 간단히 생성하여 문자열을 입력받아 후처리를 할 수 있다.


TextInputDialog dialog = new TextInputDialog("walter");
dialog.setTitle("Text Input Dialog");
dialog.setHeaderText("Look, a Text Input Dialog");
dialog.setContentText("Please enter your name:");

result.ifPresent(name -> System.out.println("Your name: " + name));


 이전에는 이런 간단한 기능도 별도로 구현하기가 까다로웠는데 이제는 쉽게 할 수 있다.

n{espy}n{005}


Posted by 살레시오
,

  파이썬은 tab키를 보통 네 개의 공백문자로 치환하여 표시한다. richtextfx 라이브러리의 CodeArea 에서 이것을 수행하려면 다음 중 하나를 사용해야 한다.


codeArea.addEventFilter(KeyEvent.KEY_PRESSED, (keyEvent) -> {
   if (keyEvent.getCode() == KeyCode.TAB) {
       codeArea.insertText(codeArea.getCaretPosition(), "    ");
       keyEvent.consume();
   }
});

아래의 두 개는 동작 방식이 유사하다.


codeArea.addEventHandler(KeyEvent.KEY_PRESSED, (keyEvent) -> {
   if (keyEvent.getCode() == KeyCode.TAB) {
       codeArea.insertText(codeArea.getCaretPosition(), "    ");
       keyEvent.consume();
   }
});

codeArea.setOnKeyPressed( (keyEvent) -> {
   if (keyEvent.getCode() == KeyCode.TAB) {
       codeArea.insertText(codeArea.getCaretPosition(), "    ");
       keyEvent.consume();
   }
});

이들 중 가장 첫 번째 방법은 키입력이 처리되지 전에 람다함수가 호출되어 keyEvent.consume() 함수가 듣는다. 즉, tab키를 누르면 tab문자가 입력되기 전에 람다함수가 호출되고 그 안에서 consume() 되므로 결과적으로 공백문자들(4개)만 입력된다. 따라서 이 방법을 사용해야 한다.


 하지만 그 다음 두 개는 키입력이 된 다음에 람다함수가 호출된다. 따라서 consume()함수는 호출하나 마나이다. 이 경우 tab키를 누르면 먼저 입력창에 tab 문자가 입력되고 그 뒤에 공백문자들이 붙는다.


c{espy}n{004}


Posted by 살레시오
,

  RichTextFX.CodeArea에 scroll bar를 붙이려면 다음과 같이 VirtualizedScrollPane 을 생성하여 Node에 붙여야 한다.


caREPL = new CodeArea();
caREPL.setWrapText(true);// 이렇게 하면 HScrollBar는 안 생긴다.
VirtualizedScrollPane caREPLS = new VirtualizedScrollPane<>(caREPL);
apane.getChildren().add(caREPLS); // apane은 anchorPane 객체

// 상하좌우 여백을 0으로 만들어 anchorPane에 fill 시킨다.

AnchorPane.setRightAnchor(caREPLS, .0); // (Node, Double)
AnchorPane.setLeftAnchor(caREPLS, .0);
AnchorPane.setBottomAnchor(caREPLS, .0);
AnchorPane.setTopAnchor(caREPLS, .0);

이렇게 하면 줄이 화면을 넘어갈 때 자동으로 세로 스크롤바가 생성된다.



 만약 위와 같이 test wrap 을 활성화시키면 가로 스크롤바는 생성되지 않지만 비활성화시킨다면 가로 스크롤바도 생성된다.


c{espy}n{espy003}


Posted by 살레시오
,

  RichTextFX.CodeArea에 css 를 적용하기 위해서는 다음과 같은 절차를 따른다.


먼저 프로젝트에 css파일을 생성하고 다음과 같이 작성한다.


.code-area {
   -fx-font-family: monospace;     //폰트
   -fx-font-size: 20;              // 폰트사이즈
   -fx-background-color: #272822;  //배경색
}

.code-area .text { //.code-area 와 .text 사이에 반드시 공백이 있어야 한다.
   -fx-fill: #FFFFFF;             // 문자 색상
}

.caret {
   -fx-stroke:white;              // 캐럿 색상
}

그리고 CodeArea 객체를 다음과 같이 생성하여 설정한다. 여기서 프로젝트의 이름은 Espy_Harper 라고 가정하고 css파일 이름은 caREPL.css 라고 가정한다.


caREPL = new CodeArea();
caREPL.setWrapText(true); // text-wrapping 설정
String stylesheet =
     Espy_Harper.class.getResource("caREPL.css").toExternalForm();
caREPL.getStylesheets().add(stylesheet);

주) 파란색은 프로젝트 이름, 빨간색은 css파일의 이름이다.


이렇게 하면 css에서 지정한 폰트, 배경색, 문자색, 캐럿 색상으로 설정된다.


c{espy}n{espy002}



Posted by 살레시오
,

  RichTextFX를 javaFX에 적용하기 위해서는 다음과 같은 절차를 따른다.


 먼저 github 페이지에 가서 richtextfx-fat-0.x.jar 라이브러리를 다운받는다. ( 반드시 -fat- 버전이어야 한다. 이것이 아니면 compile할 때 오류가 발생한다.) 이 포스트를 작성할 때 최신버전이 0.7-M2 였다. 따라서 richtextfx-fat-0.7-M2.jar 파일을 다운로드 받는다.


 그 다음 netbeans를 실행하여 javaFX FXML Application 을 생성한다. 이 프로젝트는 Scene Builder를 이용하여 UI를 구성할 수 있다.


생성된 프로젝트의 Libraries를 우클릭한 후 [Add Jar/Foler...] 를 선택하여 다운로드 받은 jar 파일을 추가시킨다.



FXMLDocController.java 파일에서 다음과 같이 AnchorPane 객체를 추가한다.


SceneBuilder 의 AnchorPane 에 이 id를 지정해 준다.


그 다음 AnchorPane 객체와 CodeArea 객체를 import 한다.


import javafx.scene.layout.AnchorPane;
import org.fxmisc.richtext.CodeArea;

그리고 FXMLDocController 클래스의 initialize() 메소드에 다음과 같이 추가한다.



실행 결과는 다음과 같다.



이것으로 javaFX 의 AnchorPane 에 CodeArea를 붙이는 것을 해 보았다.


c{espy}n{jv016}


Posted by 살레시오
,