Study & Project ✏️/electron 🐣

[라즈베리파이 크로스컴파일] electron 앱 개발중 Node.js serialport에서 첫 번째 시련

JM 2022. 1. 20. 22:29
반응형

앞서 개발했던 DNC에서 첫 번째 시련에 봉착했다.

이 화면에서 serialport의 세팅 값을 설정한 걸 로컬 스토리지에 저장하고,

이 화면의 우측 2번째 버튼인 포트버튼을 누르면 바뀐 세팅 값으로 적용하려고 한다.

// renderer.js
let portname, baudrate, databits, stopbits, Parity, RTSCTS;
let portOpen = false;

const port = new serialport('COM4', {
    baudRate: baudrate,
    dataBits: databits,
    stopBits: stopbits,
    parity: Parity,
    rtscts: RTSCTS,
    autoOpen: false,
})

portBtn.addEventListener('click', () => {
    if(portOpen === false) {
        portOpen = !portOpen;
        portStatus.innerText = '포트 : ON';
        portStatus.style.color = '#00c853';
        portStatusIcon.style.color = '#00c853';
        console.log('portBtn open!');
        port.open(function (err) {
            if (err) {
                console.log(err);
            } else {
                if(baudrate !=9600) {
                    port.update({baudRate: baudrate, stopBits: stopbits, stopBits: stopbits,})
                }
                console.log('port open');
    
                //read
                port.on('data', function (data) {
                    text.append(data);
                    text.scrollTop = text.scrollHeight;
                });
                //write
                sendBtn.addEventListener('click', () => {
                    port.write(text.value);
                });
            }
        })
    } else {
        port.close();
        portOpen = !portOpen;
        portStatus.innerText = '포트 : OFF';
        portStatus.style.color = 'white';
        portStatusIcon.style.color = 'white';
        console.log('port close!');
    }
});

해당 코드대로 electron에서 실행 시 serialport의 세팅 값이 정해지지 않아서 오류가 난다.

 

그래서

차선책으로

let portname = 'COM4', baudrate = 9600, databits = 8, stopbits = 1, Parity = 'none', RTSCTS = false;

미리 값을 주고 close상태일때 값을 변경시킨 후,

open 시키는 것을 생각했으나 변경이 되지 않는다.

 

ps. 유일하게 변경되는 건 port.update({baudRate: baudrate}) 이것 밖엔 없다.

나는 databits, stopbits, parity, rtscts도 변경하고 싶은데...


나의 생각으로는

JS가 컴파일 될 때 이미 port는 해당 parameters를 가진 채로

대기 상태에 들어가 있는 것 같다.

 

유일하게 update가 baudRate만 변경할 수 있게 지정한 이유는 뭘까??


stackoverflow와 github의 Q&A에 올리긴 했으니 뭔가 나오지 않을까.... 하는 막연한 기대감이 있다.

혹시 이 글을 보는 이런 문제점을 맞닥뜨린 경험자가 있다면 댓글로 조언 꼭 부탁드립니다.

 

만약 해결책을 찾는다면 다른 포스팅으로 올리겠다. 끝!