Processing/ControlP5 > Serial 전환 > Slidebar/Button 사용
8913 단어 processing#migrated
Processing 3.1.1
ControlP5ライブラリ
Windows 8.1 pro (64bit)
참고 ぃ tp // m / a ks pect / / ms / 6 a 574 12181c00125d40
code
import processing.serial.*;
import controlP5.*;
Serial myPort;
ControlP5 slider;
int sliderValue;
int numSerial = 5;
int curSerial = -1;
ControlP5 btnOpen;
void setup() {
size(500,500);
slider = new ControlP5(this);
slider.addSlider("COM")
.setRange(-1, numSerial - 1)
.setValue(-1)
.setPosition(50,40)
.setSize(200, 20)
.setNumberOfTickMarks(numSerial + 1);
btnOpen = new ControlP5(this);
btnOpen.addButton("openPort")
.setLabel("Open")
.setPosition(275, 40)
.setSize(100, 30);
}
void controlEvent(ControlEvent theEvent) {
if (theEvent.isController()) {
if (theEvent.getName() == "COM") {
if (curSerial != slider.getValue("COM")) {
curSerial = (int)slider.getValue("COM");
}
}
}
}
void serialEvent(Serial myPort) {
String mystr = myPort.readStringUntil('\n');
mystr = trim(mystr);
println(mystr);
}
void openPort() {
println("Open Port");
if (myPort != null) {
myPort.stop();
}
myPort = new Serial(this, Serial.list()[(int)curSerial], 9600);
myPort.bufferUntil('\n');
}
void draw() {
background(0);
}
실행 환경
실행 환경
상기 2개의 단말을 시리얼의 케이블(크로스)로 접속한다.
여기에서는 VM 이미지 2개로 named pipe를 사용하여 동작을 했다.
송신측의 TeraTerm에서는 「설정 > 단말」에서 [CR]을 [CR+LF]로 변경한다. LF를 종단으로 인식하기 위하여.
실행 예
文字列+Enter
COM1 연결시
COM3 연결 시
보충
사실은 다른 일기
사실 슬라이더 변경 시 포트 오픈을 하고 싶었는데 알 수 없는 에러가 나왔기 때문에 버튼을 추가했다.
슬라이더 1개로 오픈까지 할 수 없다면, 슬라이더를 사용하는 의미는 없을 것 같다.
TeraTerm의 함정
TeraTerm은 송신을 「CR+LF」로 해 잊으면 실패하므로, 확인이 필요.
자바
자바는 아직 잘 모르겠다. 다음은
if (myPort != null) {
myPort.stop();
}
GC를 움직이기 위해 다음과 같이하는 것이 좋을까?
if (myPort != null) {
myPort.stop();
myPort = null; // for GC
}
나중에 myPort = new Serial ()하고 있기 때문에 GC는 움직이는 것일까?
Reference
이 문제에 관하여(Processing/ControlP5 > Serial 전환 > Slidebar/Button 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/677585a1736d0f67b660텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)