From: Rob <ma...@ya...> - 2010-10-06 03:19:40
|
Trying to write a program to monitor phone bluetooth presence to arm security and to run within MH. Intent is to be able to adjust ping rate to conserve battery on phone if at home. I'm not too sharp on Perl so I may be missing a STDOUT flush trick or something similar. As long as I call the l2ping using the system(l2ping) function I get the correct response from the code. However, the output from system() goes to STDOUT and I need to use it within the code. If I use the backtick operators `l2ping`, the first response is correct and then all subsequent calls have the same response regardless of the phone bluetooth status. Any help appreciated. Code is here and I have inserted indented comments to show where the bluetooth on phone is turned on and off: #!/usr/bin/perl my $ISHERE = `/usr/bin/l2ping -c 2 00:17:83:A1:93:B1 2>&1`; my $test; sleep(30); $test=($ISHERE); print("The output from the backtick operators is \n $test \n"); sleep(30); print("The output from the system call is \n"); system('/usr/bin/l2ping -c 2 00:17:83:A1:93:B1 2>&1'); print("\n"); Following is output from the code after starting Misterhouse 10/05/10 08:00:57 PM Organizer: Reading updated organizer todo file 10/05/10 08:00:57 PM Evaluating code organizer_tasks Misterhouse is up and phone bluetooth is on The output from the backtick operators is Ping: 00:17:83:A1:93:B1 from 00:0A:3A:7C:78:5A (data size 44) ... 94 bytes from 00:17:83:A1:93:B1 id 0 time 49.81ms 94 bytes from 00:17:83:A1:93:B1 id 1 time 24.73ms 2 sent, 2 received, 0% loss The output from the system call is Ping: 00:17:83:A1:93:B1 from 00:0A:3A:7C:78:5A (data size 44) ... 94 bytes from 00:17:83:A1:93:B1 id 0 time 88.74ms 94 bytes from 00:17:83:A1:93:B1 id 1 time 81.71ms 2 sent, 2 received, 0% loss Here I turn the phone bluetooth off The output from the backtick operators is Ping: 00:17:83:A1:93:B1 from 00:0A:3A:7C:78:5A (data size 44) ... 94 bytes from 00:17:83:A1:93:B1 id 0 time 49.81ms 94 bytes from 00:17:83:A1:93:B1 id 1 time 24.73ms 2 sent, 2 received, 0% loss The output from the system call is Can't connect: Host is down Here I turn the phone bluetooth back on The output from the backtick operators is Ping: 00:17:83:A1:93:B1 from 00:0A:3A:7C:78:5A (data size 44) ... 94 bytes from 00:17:83:A1:93:B1 id 0 time 49.81ms 94 bytes from 00:17:83:A1:93:B1 id 1 time 24.73ms 2 sent, 2 received, 0% loss The output from the system call is Ping: 00:17:83:A1:93:B1 from 00:0A:3A:7C:78:5A (data size 44) ... 94 bytes from 00:17:83:A1:93:B1 id 0 time 44.37ms 94 bytes from 00:17:83:A1:93:B1 id 1 time 30.69ms 2 sent, 2 received, 0% loss |