XBeeにUDPでパケットを送ると、ATコマンドとして制御ができます。
iPhoneからの通信はGCDAsyncsocketのお世話になりました。
以下は試した時のサンプル。
severはXBeeからの応答受信用です。
clientでXBeeにATコマンドを送っています。
=== server ===
#! c:\/Perl/bin/perl.exe
use Socket;
$port = 0x0BEE;
print "xbee IP service receiver\n";
print "wait upd packet port $port\n";
socket(SOCKET, PF_INET, SOCK_DGRAM, 0)
or die "can't create socket\n";
bind(SOCKET, pack_sockaddr_in($port, INADDR_ANY));
$recv_count = 0;
while(1)
{
recv(SOCKET, $buf, 10000, 0);
$recv_count++;
print "$recv_count:$buf\n";
}
=== client ===
#! c:\/Perl/bin/perl.exe
use Socket;
$port = 0x0BEE;
$host = "192.168.0.1";
$iaddr = inet_aton($host)
or die "$host not exist\n";
$sock_addr = pack_sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_DGRAM, 0)
or die "can't create socket\n";
@data = ();
push(@data, 0x02); # command id : 0x02 : AT command
push(@data, 0); # command option : 0
push(@data, 1); # frame id
push(@data, 2); # confiuration option : 0 queued, 2 apply
push(@data, 0x44); # AT command : D 0x44
push(@data, 0x30); # AT command : 0 0x30
$value = shift @ARGV;
push(@data, $value); # AT command parameter : 4 DOUT low
send(SOCKET, pack('C*',@data), 0, $sock_addr)
or die "send fail\n";
print "sended to $host:$port\n@data\n";
0 件のコメント:
コメントを投稿