从串口发送数据到节点应用程序

时间:2014-05-30 19:23:47

标签: node.js sockets socket.io arduino real-time

我正在尝试连接arduino和nodejs app。我有一个从串口读取数据的python脚本。

import socket
import serial

if __name__ == "__main__":

    while True:
        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        client.connect(('127.0.0.1', 8080))
        serial_read = serial.Serial('/dev/ttyACM0', 115200)
        signal = serial_read.readline()
        if "B" in signal:
            s = signal.split("B")
            client.sendall(s[1])

并发送到localhost.My服务器端:

var app = require('http').createServer(handler).listen(8080),
    io = require('socket.io').listen(app),
    fs = require('fs');


io.sockets.on('connection', function(socket){

});

function handler (req, res) {
    fs.readFile(__dirname + '/index.html',
        function (err, data) {
            if (err) {
                    res.writeHead(500);
                    return res.end('Error loading index.html');
                    }

        res.writeHead(200,{ 'Content-type': 'text/html'});
        res.end(data);
        setInterval(function(){
        io.sockets.emit('pulse', {'pulse': data});
    }, 1000);


  });
}

客户端:

<script>
      var socket = io.connect();

      socket.on('pulse', function(data){
        $('#pulse').text(data.pulse);
      });
    </script>
    <div id="pulse"></div> <br>

我的问题是我无法在页面上正确显示数据。我的代码中是否有任何问题?

1 个答案:

答案 0 :(得分:0)

如果serialport具有二进制或unicode数据,那么HTML仅支持ascii内容,那么您需要使用apprppriate编码在页面上显示它