# meoser **Repository Path**: jeremy_young/meoser ## Basic Information - **Project Name**: meoser - **Description**: meos 协议解析器 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-09-19 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 更新说明 2018-3-23 meoser@0.3.0 支持 codey 在离线、在线模式下rocky颜色传感器、陀螺仪的校正。校正时程序会停止运行。 2018-3-15 meoser@0.2.9 codey 广播、通信变量等支持中文 2018-1-25 meoser@0.2.5 实现 codey 在线模式;另一个重要的调整是:将 `file uploader` 相关的接口整合进 uploader 对象中 2017-11-28 meoser@0.2.3 修复一个严重的拼写错误:`deReceived` 错误写成 `deRecevied` 2017-11-20 meoser@0.2.2 代码结构优化重构。另新增 `getReadyStatus`,`getCommChannel`接口,增强上位机对硬件状态的了解 2017-11-06 meoser@0.2.1 烧录文件默认错误重试2次 & 新增 `setCommVarCache` 接口 2017-11-03 meoser@0.2.0 新增 DTR 握手协议的接口及实现 & clean 了一下 code 2017-10-31 meoser@0.1.9 修复内部事件在下位机异常响应时未被移除,从而导致重复绑定的错误 2017-10-23 meoser@0.1.8 调整 uploadContent 接口,支持上传音乐 2017-10-18 meoser@0.1.5 新增 log 日志接口 2017-10-18 meoser@0.1.3 新增查询mac地址、查询固件版本号的接口实现 2017-10-13 meoser@0.1.1 新增广播协议及接口实现 ## API 简述 ### 设置连接 设置连接的 API 用于设置发送协议的方法和绑定接收协议的回调。连接方式包括蓝牙(Ble)、WIFI、串口(serialport) 等。 >设置协议发送方式:`meos.setSender(sender)` >mEos 接收返回协议:`meos.doReceived(buf)` ``` let meos = new Meos(); //假设使用 socket socket.on('receive_buf', function (buf) { meos.doReceived(JSON.parse(buf)); }); let sender = (buf) => { socket.emit('send_buf', { buf: JSON.stringify(buf) }); } meos.setSender(sender); ``` ### 上传文件 与 mEos 主控建立连接之后,就可以上传文件了。只需两步调用: ``` // 设置内容 meos.content = 'here is a string of python code'; // 开始上传 meos.uploadContent() ``` 上传音乐和上传文件同用该一套接口。 此外,还有一些相关接口丰富上传文件的交互形式: >`meos.blockLength = 100` 可以设置一次消息块的大小调整上传速度。 >`meos.onUploadProgress(hanlder)` 传入的事件句柄 `handler` 可以获取到文件总大小及上传大小等信息。 ### 删除文件 >`deleteFile(filename)` 删除 mEos 中已上传的文件。 ``` meos.deleteFile('./flash/main.py').then((result) => { console.log(result); }); ``` ### 传感器读值 传感器读值,分两步完成:1、发送请求协议;2、调用接口获取读值 >请求读值:`requestRead(sensor_id)` ``` // 发出请求,请求读取声音强度的值 // 声音强度传感器的 sensor_id 为: 1 meos.requestRead(1).then((req_result) => { console.log(req_result); }) ``` >请求中断读值:`requestUnRead(sensor_id)` ``` // 发出请求,请求停止读取声音强度 meos.requestUnRead(1).then((result) => { console.log(result); }) ``` >读取传感器的值:`readSensor(sensor_id)` ``` let value = meos.readSensor(1); ``` ### 通信变量 读取变量是读取 mEos 主控中的脚本变量,写入变量是将软件端的变量写入到 mEos 主控中。 如果将上位机和 mEos 看成同一个编程环境,就很容易理解这个超全局的通信变量了。 >读取通信变量的值:`readCommVar(var_name)` ``` // 读取下位机 speed 变量值 meos.readCommVar('speed') // 读取下位机 name 变量值 let name = meos.readCommVar('name') ``` >写入通信变量的值:`writeCommVar(var_name, var_value)` ``` // 设置下位机 speed 变量值为 50 meos.writeCommVar('speed', 50) // 设置下位机 name 变量值为 'rick' meos.writeCommVar('name', 'rick') ``` ### 消息广播 >向 mEos 发送广播消息:`sendBroadcast(msg)` ``` meos.sendBroadcast('hello') ``` >添加 mEos 广播句柄:`addBroadcastHandler(handler)` ``` meos.addBroadcastHandler((msg) => { console.log('接收到 mEos 的广播:', msg); }) ``` ### 读取 MAC 地址, 固件版本号 >读取 mEos 的 MAC 地址:`readMacAddr(typeNumber)` ``` // wifi 连接时 meos.readMacAddr(1).then((res) => console.log(res.mac, res.type)) // ble 连接时 meos.readMacAddr(2).then((res) => console.log(res.mac, res.type)) ``` >读取 mEos 固件版本号:`readVersion()` ``` meos.readVersion().then((res) => console.log(res.version, res.name)) ```