Cordova插件 : https://github.com/xseignard/cordovarduinogit
安装:cordova plugin add cordovarduinogithub
代码示例:app
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(); };
不知道插件的问题仍是硬件的问题,原本应该一次返回的数据报文分了屡次返回,因此在监测回调接收数据的时候先把收到的数据拼接以后再进行下一步处理。若是你的设备正常能够去除这一步。ui