跳转至

柿饼M之串口

本篇教程将向大家介绍如何在JS代码中打开一个串口设备并对其进行数据发送和接收。

其中发送和接收的数据类型都是Buffer

首先,在上位机设计器上创建好一个新的工程,并加入如下图所示的几个控件。

lesson05_01

MultiTextBox与Button的属性信息如下:

lesson05_01

脚本代码编辑

在设计器中双击打开脚本代码文件编辑:

lesson05_05

代码如下:

  • app.js
var app = {
    page : "page1/page1",

    onLaunch: function (event)  //app加载回调函数
    {
        console.log('app onLaunch');

        uart = pm.openSerialPort({port : "uart5", baud : 115200});    //打开串口设备uart5
        if (uart)
        {
            console.log('pm.openSerialPort OK');
            uart.write(Buffer(" pm.openSerialPort OK!!! ", 'ascii'));     //串口发送数据,一个ascii字符串数据BUFF
            uart.onData(this.onUart, this);     //设置串口接收函数为 onUart
        }
    },

    onUart : function (data)    //串口接收数据回调函数,data 为串口数据
    {
        console.log('Uart data : ', data.toString('hex'));  //以十六进制方式打印串口接收到的数据
        console.log('Data len : ', data.length);            //串口接收到的数据长度
        uart.write(Buffer(" onUart ", 'ascii'));
        this.onUpdate({type : 'uart', value : data});       //{type : 'uart', value : data} 对象广播到所有窗口的 onUpdate 函数
    }
};

App(app);
  • page1.js
var page = {
    str : '',
    onUpdate: function (data)   //数据更新回调
    {
        console.log(data.value.toString('utf8'));
        if (data.type == 'uart')
        {
            this.str += data.value.toString('utf8');
                console.log(this.str);
                this.setData({MultiTextBox1 : {value : this.str, refresh : true}})  //设置MultiTextBox控件显示内容
        }
    },

    onBtn : function()  //Button 点击回调函数
    {
        this.str = '';
        this.setData({MultiTextBox1 : {clear : true, refresh : true}})      //清空MultiTextBox控件显示内容
    }
};

Page(page);
  • 实际效果

lesson05_06

demo

评论