2014年10月29日水曜日

PQI Air Card その3

その2からの続き


ここで紹介されているのは「ホットスポット接続し、IPアドレスを twitter で通知」、というものだが。

twitter はほとんど使っていないので、何か別の方法がいいなー

インターネット繋がってないと通知来ないし。。。
そもそも、ただ同一ネットワーク上の PC かスマホにメッセージを送ればいいわけで。

例えば、 IP メッセンジャーとかwww


というわけで、コマンドラインから IP メッセンジャーにメッセージを送る方法を探してみると

IPメッセンジャーへメッセージを送る Perl版

というのを見つけた。さっそく試してみよう。
上記ページを見ると、 Encode.pm 版 (perl 5.8 以降) と NKF.pm 版 (5.8 より前) があったが
ソースを見ると、日本語のエンコードに encode()/decode() を使うか nkf() を使うかが違うだけぽい。

まあ、別に IP アドレスと接続完了のメッセージが送れればいいので…


別に日本語使わんでいーわヽ( ´ー`)ノ。

てなわけで、エンコード系の処理を削除して使うことにする。
改良後のソースコードはこんなんなった。

#!/usr/bin/perl -w
#
# ipmsg.pl <host to send> <your name> <message>
#
# ipmsg.pl <host to send> <your name> ... input message from STDIN
#
use Socket;
use Sys::Hostname;
## to info
my $tohost = gethostbyname($ARGV[0]);
my $toport = 2425;
## from info
my $myname = $ARGV[1];
my $myhost = "PQI Air Card";
## net info
my $proto = getprotobyname('udp');
my $ihost = gethostbyname(hostname());
my $ipaddr = sockaddr_in(0, $ihost); # 0 means let kernel pick
my $hispaddr = sockaddr_in($toport, $tohost);
my $sendtext;
if (@ARGV >= 3)
{
$sendtext = $ARGV[2];
}
else
{
$sendtext = <STDIN>;
}
$sendtext = sprintf('1:%d:%s:%s:32:%s', int(rand(100))+1, $myname, $myhost, $sendtext);
socket(SOCKET, PF_INET, SOCK_DGRAM, $proto);
bind(SOCKET, $ipaddr);
send(SOCKET, $sendtext, 0, $hispaddr);

とりあえず、 PC 上でスクリプトを動かして動作確認。ちゃんと動いた。
ではこれを、 SD カードにコピーして。
さて、動かしてみよう!!
# /mnt/sd/ipmsg.pl localhost ozawa hogCan't locate Socket.pm in @INC (@INC contains: /usr/local/lib/perl5/5.14 /usr/local/lib/perl5/5.14 .) at /mnt/sd/ipmsg.pl line 8.BEGIN failed--compilation aborted at /mnt/sd/ipmsg.pl line 8.

くっ…orz

どうやら、 Socket.pm がないんですね…

しかたない、さっきのページからリンクを辿り、 PQI Air Card 用にコンパイルされた busyboxここからダウンロード。
解凍して、 SD カードのルートに .linux というディレクトリを作ってその下に入れる。
で、シンボリックリンクをはり直して…

# rm /usr/bin/perl
# ln -s /mnt/sd/.linux/122_TREK/busybox /usr/bin/perl
# perl --version
perl: applet not found

(  ゜ ▽ ゜ ;)エッ!!…


もしかして…もしかしてだけど… perl 含まれてない!?


OTZ orz .,

2014年10月19日日曜日

PQI Air Card その2

その1 からの続き

まーそりゃそうか、普通 telnet なんか使わないもんなー
windows では、サービスが無効になってるので、コントロールパネルから有効にしてやれば使えるらしい。
まーでも、 DOS プロンプトで telnet なぞ使いたくないので cygwin の telnet を使おう。
cygwin の inetd パッケージをインストールしてっと。

それから、 SD カードアダプタにより接続が安定するのとしないのがあるらしいのでそれぞれチェック。

  • ノート PC の SD カードスロット  ×
  • maxell の UA20-MLTII  ×
  • サンワサプライの ADR-ML14R  ○
よし、動くのがあった。
まず、 wifi で接続して…
それから telnet で接続して…

とりあえずわかったこと。

  • SD カード本体は /mnt/sd
  • /usr/local/bin は /mnt/sd/bin
  • /usr/local/bin は /mnt/sd/sbin
その 3 へ続く

PQI Air Card その1

引き出しの奥に眠っていた PQI Air Card

EOS7D で Wifi 転送等使うために買ったのだが
ネットでは動作報告があるのに、残念ながら俺の環境では動作しなかった…orz
(CF アダプタの相性か?)

しかしながら、たまたまこんな記事とかこんな記事とかを見て
何か面白そうだなぁと思い引き出しの奥から引っぱり出して
とりあえず telnet 接続しようと…



…ん? telnet がねぇΣ( ̄□ ̄;

→その 2 に続く

EXCEL での正規表現置換

エクセルで、"No" の後の数字を一括で A1 セルで指定した内容に置換したくて REGEXREPLACE(B10,"(No)[0-9]+","$1"&A1) と書いたらエラーになった。なんで?  "...