먼저 serialport 모듈을 설치한다.
$ npm install --save-dev serialport
> serialport@1.6.2 install /home/test/node_modules/serialport
> node-pre-gyp install --fallback-to-build
[serialport] Success: "/home/test/node_modules/serialport/build/serialport/v1.6.2/Release/node-v11-darwin-x64/serialport.node" is installed via remote
serialport@1.6.2 ../node_modules/serialport
├── bindings@1.2.1
├── sf@0.1.7
├── nan@1.7.0
├── optimist@0.6.1 (wordwrap@0.0.2, minimist@0.0.10)
└── debug@2.1.3 (ms@0.7.0)
$
설치가 완료되면 시리얼 포트를 열어준다.
$ node
> var serialport = require("serialport");
undefined
> SerialPort = serialport.SerialPort;
{ [Function: SerialPort]
super_:
{ [Function: Stream]
super_: { [Function: EventEmitter] listenerCount: [Function] },
Readable:
{ [Function: Readable]
ReadableState: [Function: ReadableState],
super_: [Circular],
_fromList: [Function: fromList] },
Writable:
{ [Function: Writable]
WritableState: [Function: WritableState],
super_: [Circular] },
Duplex: { [Function: Duplex] super_: [Object] },
Transform: { [Function: Transform] super_: [Object] },
PassThrough: { [Function: PassThrough] super_: [Object] },
Stream: [Circular] } }
> var serialPort = new SerialPort("/dev/cu.usbmodem14131", {
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});
> serialPort = new SerialPort("/dev/cu.PL2303-00003014", {
... baudrate: 9600,
... parser: serialport.parsers.readline("\n")
... });
{ domain: null,
_events: {},
_maxListeners: 10,
fd: null,
paused: true,
bufferSize: 256,
readable: true,
reading: false,
options:
{ baudrate: 9600,
parser: [Function],
baudRate: 9600,
dataBits: 8,
stopBits: 1,
parity: 'none',
rtscts: false,
xon: false,
xoff: false,
xany: false,
bufferSize: 256,
platformOptions: { vmin: 1, vtime: 0 },
dataCallback: [Function],
disconnectedCallback: [Function] },
path: '/dev/cu.PL2303-00003014' }
>
위에서 '/dev/cu.PL2303-00003014' 부분은 시스템에 맞게 바꿔주면 된다. 리눅스라면 보통 '/dev/ttyUSB0' 같은 이름이고 윈도우라면 'COM1' 같은 이름이 된다.
테스트하기 위해 아두이노에 0.1초마다 숫자를 하나씩 증가시켜 시리얼포트로 출력하도록 하는 스케치를 업로드 해 준다.
setup() {
Serial.begin(9600);
}
int i=0;
void loop() {
Serial.println(i++);
delay(100); // poll every 100ms
}
Reading from the port
시리얼포트에서 값을 읽어 화면에 표시하기 위해 다음의 코드를 작성해 'dump.js'라는 이름으로 저장해준다.
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var serialPort = new SerialPort("cu.PL2303-00003014", {
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});
serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) {
console.log(data);
});
});
이제 아두이노를 USB-to-Serial 케이블에 연결하고 dump.js를 실행한다.
$ node jump.js...
5
6
7
....
^C
$
좀 더 상세한 정보와 예제 코드는 https://www.npmjs.com/package/serialport 를 참조하면 된다.
댓글 없음:
댓글 쓰기