複数プランター対応
2016年9月5日 - 未分類
アイティプランターが2台以上ある場合、1台のいTelepassでコントロールしたいですよね。
しかし、10台以上のアイティプランターがつながっている場合、応答に時間がかかることがあります。sendcomが通信に失敗することがあり、正しい結果を得ることができないことがりました。
そこで、以下のようにsしています。
// 時間待ち関数
function loopSleep(_loopLimit,_interval, _mainFunc){
var loopLimit = _loopLimit;
var interval = _interval;
var mainFunc = _mainFunc;
var i = 0;
var loopFunc = function () {
var result = mainFunc(i);
if (result === false) {
// break機能
return;
}
i = i + 1;
if (i < loopLimit) {
setTimeout(loopFunc, interval);
}
}
loopFunc();
}
// 全てをアップデート
function updateAll(){
console.log(‘Update All’);
loopSleep(nPlanter, 300, function(i){
// 0.3秒毎にコマンドを投入する
update(i);
});
}
function update(n){
var i = n;
sendcom_command([n,’-e’, ‘GG’]).done(function(data) {
now = new Date();
$.each(data,
function(key, val) {
data = val;
});
np = data;
// for test
if( np === ” ) np=’Command: GG<br>h 10 m 1 s 56 mm 601<br><br>’;
var tmp = np.split(‘<br>’)[1].split(‘ ‘);// temp
now.setHours(tmp[1]);
now.setMinutes(tmp[3]);
now.setSeconds(tmp[5]);
if( chartarray[n] ){
console.log(‘series:’+chartarray[n].series[0].data[0].y);
var hour = chartarray[n].series[0].data[0].y;
var minute = chartarray[n].series[0].data[0].y;
var second = chartarray[n].series[0].data[0].y;
hour=now.getHours()+ now.getMinutes() / 60;
minute=now.getMinutes() * 12 / 60 + now.getSeconds() * 12 / 3600;
second=now.getSeconds() * 12 / 60;
}
});
}