반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- error
- electron-nuxt
- NUXT
- sort
- Electron
- v-text-field height
- vuetifyjs
- JavaScript
- bucket max-key
- nodejs
- Android
- onsen-ui
- Vue
- naver storage
- xlsx
- CSS
- kotlin
- c#
- 프로세스 방지
- MySQL
- f035d
- 동일 프로세스
- onsenui
- naver storage bucket error
- bucket cors
- v-select
- 동일 프로그램
- Vuetify
- sequelize
- vuejs
Archives
- Today
- Total
앙큼한 개발기록
[electron] electron-nuxt serialport 연결 본문
최근 electron으로 개발하면서
가장 오래동안 애먹고
가장 힘들었고
다 영어로 되어 있어서 짜증났던 내용을 정리하고자 한다.
우선 serial-port
나는 node version이 14.x.x이였나...?를 사용해서 그런지 최신 버전의 serial-port (내가 할때는 10.x 가 최신)를 설치하면
버전 오류 및 build 오류를 마구 던졌다.
그래서 9.2.0 버전을 기준으로
이글을 작성한다.
설치는
yarn add serial-port
electron에서 serial-port는 브라우저단에서는 사용이 불가능하고
앱 단에서 사용이 가능하다.
시리얼 포트를 사용하면서 느끼는 건데 javascript는 single thread 이고 나는 비동기 콜백을 포트에 사용해서
포트와 데이터를 주고 받고 전달하는거 다 기다리고 싶으면
SerailPort.js를 별도로 만들어서
아래의 코드로 사용하면 좋다.
'use strict'
const SerialPort = require('serialport')
// write async
SerialPort.prototype.writeAsync = function (data, encoding) {
return new Promise((resolve, reject) => {
try {
this.write(data, encoding, (err) => {
if (err)
resolve(err)
else
resolve(null)
})
}
catch (e) {
reject(e)
}
})
}
// close async
SerialPort.prototype.closeAsync = function () {
return new Promise((resolve, reject) => {
try {
this.close((err) => {
if (err)
resolve(err)
else
resolve(null)
}, null)
} catch (e) {
reject(e)
}
})
}
module.exports = SerialPort
// 이런식으로 정의하고
const SerailPort = require('./SerialPort')
포트는 아래처럼 사용하면 된다.
const SerailPort = require('./SerailPort')
let port = 'COM1'
let baudRate = 9600
let port = new SerialPort(port, {
baudRate: baudRate
})
// 포트 열기
port.on('open', async () => {
await port.writeAsync('포트로 보내고 싶은 내용')
// 호출시 port.on close 호출
await port.closeAsync()
})
// 포트 오류
port.on('error', async (e) => {
console.log('[message] error', e)
})
// 포트 닫고 나서 호출
port.on('close', e => {
console.log('[message] close', e)
})
new Serialport로 생성할때 사용되는 포트 목록은
아래의 코드에서 목록을 보고
포트 목록을 알 수 있다.
그리고 호출은 비동기다.
portList: async () => {
return await SerialPort.list()
.catch(e => {
console.log('[port list]', e)
return []
})
},
baudRate는 전송 속도를 말하는데
연결되어 있는 기기에 따라서 다를수 있다.
기본적으로 9600으로 되어 있는 기기가 많다.
확인하려면 [window] - [장치 관리자] 에서 연결된 포트 상세정보를 보면 알수 있다.
끝.
'개발 > electron' 카테고리의 다른 글
[electron] node-ffi error #1 Error: Dynamic Linking Error: Win32 error 126 (0) | 2022.07.26 |
---|---|
[electron] serialport node-gyp error 오류 (0) | 2022.07.26 |
[electron] os별 build 방법 (0) | 2022.06.21 |
[electron-nuxt] windowHandler, browser 데이터 전송 (0) | 2022.06.20 |