
CPANにあるIO::Socketを使うとソケット通信ができる。
usestrict;
usewarnings;
useIO::Socket;my$sock=IO::Socket::INET->new(PeerAddr=>’192.168.0.180′,
PeerPort=>’50001′,
Proto=>’tcp’);
$sock->send(“zanmaizanmai”);
これだけで、192.168.0.180の50001番ポートにTCP接続で、「zanmaizanmai」というデータが送られる。
前に作ったLivedoor天気情報から東京の天気を取得するに組み合わせるとこうなった。
XPort-03RのTCP/IPのポートを開いて、socket通信をマイコンに伝える設定をした。
XPortは3Vで動くので、その動かし方やパソコン側にインストールする設定ソフトについては
s.h.log: XPort-03Rを動かしてみた
ismlog XPort①
を参照。
ハードウェアはこんな感じ。自分のパソコンと同じLANにLANケーブルで接続されたXPort(Ethernet-UART変換器)に、ADM3202で自作したUART-RS232C変換器をつけて、そのRS232Cをパソコンのシリアルポートに戻している。

XPortのIPアドレスは192.168.0.180を割り当てた。
XPortは3Vで動かしている。
ADM3202はブレッドボードから供給されている5Vで動いている。両者の間のUARTは、3Vと5Vだけども問題なく動いている。
もちろんGNDは共有する。
俺にとって、オブジェクト指向「分析」「設計」「プログラミング」において最も重要なものは「オブジェクト」だ。オブジェクトとは、複数の処理と値を1つにまとめたデータ構造の事だ。
みんなで分担して実装できるとか、継承する事で無駄がなくなるとか、カプセル化とかは大したことではない様に俺は思う。なぜならC#やFlashやPHPやPerlやJavaなどオブジェクト指向の言語を使っていても、「俺C#とサーバ用意するから、君Flashと電子工作やってね」という風に分担してしまうから。俺がやっている、コンピュータが入っている物体を作る「インタラクションデザイン」というのが、オブジェクトの単位で仕事分担をするよりも、処理系単位で分担をした方が良い分野だからかもしれない。
話を戻すと、そういう処理系やプログラミング言語のレベルで分担してしまうような人にとって、なぜ「オブジェクト」が1番重要か?というと、その「処理と値を1つにまとめたデータ構造」という考え方が、俺達が普段生活している世界に近いからだ。
ビデオを見て欲しい。
このビデオを、普段使っている言葉で記述するとこうなる。
2人の男性がMacBookを振り、ライトセイバーの音を出しながら戦っている
このように、言葉にする時、名詞と動詞とがある。
それはオブジェクトとそのメソッドとプロパティとして表す事ができる。
オブジェクト指向で書かれたプログラムは、実行される時には機械語として実行されている。それは電子をあっちからこっちへ動かしている、よくわからない世界だ。プログラミングというのは、コンピュータにそういうよくわからない動作をさせるための「手順」を書く事だ。
しかし、俺達がモノの仕組みを考えて、現実的な問題を解決しようとしている時、シーンを頭に思い浮かべたり、実物大のモックアップを前に「ここはこうなんじゃないか?」と議論したりする。そしてその試行錯誤を、頭の中で完結させないために、すぐにプロトタイプを作って動かしてみる様にしている。
つまり、チーム内で議論したりシナリオやシーンを試行錯誤する事と、手を動かして作る事はセットとして反復する必要がある。
でも、実際にプログラミングする時になっていきなりよくわからない電子の世界に行きたくはない。シナリオを頭に残したままの状態でプログラミングしたい。そしてちょっと動いたら見せ合って、また話し合って、またプログラミングに戻りたい。
そういう時の、コンピュータに動作手順を指定しつつ、シーンとかシナリオとか使い心地を考えながらやるのに一番向いているのがオブジェクト指向なんだと思う。
なぜなら、変数と関数をひとまとめにしたオブジェクトというモノが、名詞や動詞や主語述語で認識している、俺達が普段生活している世界にかなり近いから。
オブジェクト指向という考え方において、「メソッドとプロパティを1つにまとめたオブジェクト」が一番大事だと俺が感じている理由は、この日常世界のデザインを試行錯誤している時の考え方とオブジェクト指向という考え方かなり近い為だと思う。
「LEDをピコピコさせる」というのは横一列に並べたLEDをマイコンのピンから順番に電流を出したり出さなかったりして順番に点灯させる事を指す。
GPIOの開閉、代入、wait処理、for文if文、インクリメントなどのマイコンプログラミングでよく使う要素が入っているので、新しいマイコンを使う時はこれをやってみる事にしている。
ちなみにGPIOへの入力は、チャタリングやプルアップなど色々あるので別にやる。
→LED ピコピコ 検索結果
あと最近知ったけど GPIO はGeneral-Purpose I/Oの略で、つまり汎用ピンの事なんだね。
PSoC MiniProg付属のPSoCMiniEvalにCY8C29466を載せてやってみた。
Source Code(PSoC Designer 4.3 + C Compiler)
動かした。
今回も桑野さんのはじめてのPSoCマイコンのp.63-72「入出力&割り込みのしくみとスイッチ&LEDを使った実験」を参考にした。