• 混合式应用开发之串口通讯(2)


    发送指令与解析数据

      

      Cordova插件 : https://github.com/xseignard/cordovarduino

      安装:cordova plugin add cordovarduino

      代码示例:

      

    var opts = {
            baudRate: 115200
        };
        $scope.allData = [];
        serial.requestPermission(function success(res){
            console.log(res);
            serial.open(opts, function success(res){
                console.log(res);
            }, function error(err){
                console.log(err);
            });
        }, function error(err){
            console.log(err);
        });
        var view = [];
        serial.registerReadCallback(function success(res) {
                    var lin = new Uint8Array(res);
                    view = view.concat(Array.from(lin));//因为插件把一次数据分多次返回所以先进行拼接
                    if (view.length == 35) {
                        //单卡
                        $scope.anaData(view);
                        console.log('单' + view)
                    }else{
                            //多卡
                        if ((view.length-35)%20 == 0) {
                            console.log('多' + view)
                            $scope.anaDatas(view);
                        }
                    }
                },function error(error) {
                    console.log(error)
        }); 
        //发送指令
        $scope.sendOrder = function(){
            serial.writeHex(myOrderString, function success(res){
                console.log(res);
            }, function error(err){
                console.log(err);
            });
        }
        //接收数据
        //解析数据单个
         $scope.anaData = function(aaa){
            var bbb = aaa.slice(13,29);
            var ccc = '';
            var arr = [];
            var ddd = [];
            function topow(x) {
                return x.toString(16)
            };
            bbb.map(topow);
            ccc = String.fromCharCode.apply(null,bbb);
            for (var i = 0;i<ccc.length;i=i+2) {
                arr.push(ccc.substring(i,i+2));
            }
            arr.reverse();
            ddd = arr.join('')
            console.log(ddd);
            $scope.allData.push(ddd);
            $scope.$apply();
         };

       注意:

        不知道插件的问题还是硬件的问题,本来应该一次返回的数据报文分了多次返回,所以在监测回调接收数据的时候先把收到的数据拼接之后再进行下一步处理。如果你的设备正常可以去除这一步。

      

  • 相关阅读:
    关于WorkFlow的使用以及例子
    11 个用来创建图形和图表的 JavaScript 工具包
    产品经理看程序员的自我修养
    extern "C" 的作用
    DLL 演示
    C++中L和_T()之区别
    VMware:Configuration file was created by a VMware product with more features than this version
    使用内存映射来对文件排序
    平衡二叉树的插入删除操作
    volatile关键字的使用
  • 原文地址:https://www.cnblogs.com/zhuxuda/p/8611893.html
Copyright © 2020-2023  润新知