發送指令與解析數據 Cordova插件 : https://github.com/xseignard/cordovarduino 安裝:cordova plugin add cordovarduino 代碼示例: 註意: 不知道插件的問題還是硬體的問題,本來應該一次返回的數據報文分了多次返回,所以在 ...
發送指令與解析數據
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(); };
註意:
不知道插件的問題還是硬體的問題,本來應該一次返回的數據報文分了多次返回,所以在監測回調接收數據的時候先把收到的數據拼接之後再進行下一步處理。如果你的設備正常可以去除這一步。