2025年4月26日土曜日

Python3 or Nodejs uart to uno

------------------- python3 ------------------------------------------------- 

https://ysuga.net/?p=558 これはpython3でuartする方法

ラズパイならこれのほうがいいかも

---------------------------------------------------------------------------------

void setup() { Serial.begin(9600); } int data = 0; void loop() { data++; Serial.println(data); delay(1000); }

---------------------------------------------------

import serial

ser = serial.Serial('/dev/cu.usbmodem1101', 9600,timeout=None)
while True:
    line = ser.readline() # ここで一行データを取得するがbyte型
    stripped_str = str(line, 'ascii').strip() # byte型を文字列に変換して前後の空白改行除去
    data = int(stripped_str) # 文字列を数値に解釈し直す
    print(data)

ーーーーーーnodejsーーーーーーーーーーーーーーーーー

https://qiita.com/hypertombo/items/f6160633630cf4bdf23a を参考にした

index.html

<html> <body> <h1>serialport & socket.io</h1> <ul id="messageList" /> <script src="/socket.io/socket.io.js"></script> <script> const socket = io(); const addMessageList = (message) => { const ul = document.getElementById('messageList'); const li = document.createElement('li'); const text = document.createTextNode(message); li.appendChild(text); ul.appendChild(li); }; socket.on('receiveMessage', (message) => { addMessageList(message); }); </script> </body> </html>

index.js

const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const app = express(); const server = http.Server(app); const io = socketIo(server); const PORT = 8000; app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); // クライアントからの接続待ち server.listen(PORT, () => { console.log(`listening on port ${PORT}`); }); io.on('connection', (socket) => { console.log('user connected'); socket.on('disconnect', () => { console.log('disconnect'); }); }); // serialport の設定 const { SerialPort } = require('serialport') const { ReadlineParser } = require('@serialport/parser-readline') const port = new SerialPort({ path: 'COM3', baudRate: 115200 }) const parser = port.pipe(new ReadlineParser({ delimiter: '\r\n' })) parser.on('data', console.log) // serialport の読み込みと socket.io 経由で送信 port.on("open", () => { console.log('open'); port.on('data', (data) => { console.log(data); message = (new TextDecoder).decode(data); // バイト配列から文字列へ変換する。 io.emit('receiveMessage', message); }); });


unoからは以下のようにシリアル出力される

#define DELAY 1000

void setup() { Serial.begin(115200); } void loop() { static int cnt = 0; Serial.print("count:"); Serial.print(++cnt); Serial.println(); delay(DELAY); }


0 件のコメント:

コメントを投稿