アーカイブ
C# – UDP/IPでチャットアプリ
ちょっとUDPを使ってアプリを作る用事があるので、まずは.NETのSystem.Net.Sockets.UdpClientクラスでシンプルなテキストチャットを作ってみた。相手のIPアドレスとポートを指定してメッセージ(文字列)を送り、受信側はポートを開けてさえいればメッセージが読める。
UDPによりデータの送受信を行う: .NET Tips: C#, VB.NET, Visual Studioを参考にした。
学部の頃にインターネット概論という授業で、
- コンジェスチョンコントロールがない
- フローコントロールがない
■ソースコード
shokai / C# UDP Sample / source — bitbucket.org
(VisualStudio2008pro C#で作成)
別ホスト(VMWare上のUbuntuでmonoで実行)とも通信できた

■UdpClientの使い方
まず必要な物読み込んで
using System.Net;
using System.Net.Sockets;
UdpClientオブジェクトを作ってportを開く。
UdpClient client = new UdpClient(6000); // 受信port
client.DontFragment = true;
client.EnableBroadcast = true;
これですでに受信できるようになっている。
相手のIPアドレスかホスト名とportを指定して、UTF8エンコードで送信
Encoding encoding = Encoding.UTF8;
byte[] sendBytes = encoding.GetBytes("送信する文字列");
client.Send(sendBytes, sendBytes.Length, "192.168.0.15", 6000);
受信バッファから読み出すと、文字列と受信元IPとportがわかる。
if (client.Available > 0)
{
byte[] recvByte = client.Receive(ref remoteEP);
Console.WriteLine("receive: " + encoding.GetString(recvByte) +
" (form" + remoteEP.Address + ":" + remoteEP.Port+")");
}
最後にUdpClientを閉じるのを忘れないように
client.Close();
チャットアプリの実際の処理はUDPClientSampleForm.csに全部書いてある。受信を別スレッドにしてある。
moxaでバイオメタルを動かした
バイオメタルをmoxaで動かすために0V~3V程度を出せる回路とプログラムを作った。
色々試した結果、最終的にPCからシリアル通信でmoxaのanalogWrite(PWM出力)を制御できるようにして、analogWriteをトランジスタ(2SC1815)に突っ込む。トランジスタは三端子レギュレータ7805から得た5Vを出すが、トランジスタを通る事で3.7V程度に落ちて、バイオメタルにちょうど良い電圧になった。
バイオメタルは「3Vで駆動」と書いてあったけど3.7Vでも大丈夫だった。5Vそのまま入れると変な臭いがしてきてヤバイ(すぐ止めました)
AVRマイコンのGPIO出力は3Vだけど40mAと電流が足りなかった。
バイオメタルを動かすには200mA程度必要で、秋月の3.3Vの三端子レギュレータを使っても動いたけどマイコンから制御するためにトランジスタをかますと2V程度に落ちてしまうので5V電源でやったらちょうど良くなった。アクチュエータ系は試行錯誤が必要だなー
パソコンでアナログ値を制御している動画
回路。基盤で隠れて見えないけど、moxaの左下のGNDはブレッドボードのGNDと接続されている


今回のtalkticコード
xtel technical information > learning> Analog Read & Writeを参考にした
serialInit(9600);
pinMode(1,true);
pinMode(0,true);
power = 0.0;
function onSerialReceive(){ // シリアル受信イベント
while(serialAvailable()){ // 受信データがある時
var recvData = serialRead(); // 読み出し
power = recvData*0.01;
analogWrite(0, power);
analogWrite(1, power)
serialSend(recvData); // 受信した文字列をそのままエコーする
}
}
while(true){
}
OpenCVの勉強リポジトリ
巨大なaviやbmpもcommitしたいけどbitbucket.orgの容量を使いたくないので、さくらにhgweb.cgiで置くことにした
http://shokai.org/projects/opencv-study/
.hg/hgrc に
[web]
#style = gitweb
allow_archive = gz,zip
と書いてzipでくれ機能を出した。styleはgitwebにしようと思ったけどやっぱりデフォルトにした
C#でWord2007のOCR機能を使う
wordのOCR機能がCOM APIから使えるとの事だったので試した。
まちみのな::C#で文字認識を行うとCodeProject: OCR with Microsoft? Office. Free source code and programming helpを参考にした、というかほぼそのままで、UIを付けただけ。
日本語OCRは商用の物しか見つからなくて、クセロReaderに入ってるとかどうやってか自分で作ってる人もいるけど、高嶺の花だった。英語はオープンソースプロジェクトがいくつかあるのになあ・・・
できたもの。
画像をドラッグアンドドロップするとOCR発動、文字を読み取る。この画質の写真でも相当間違える。

■作ったサンプル
shokai / OCR C# Sample / overview — bitbucket.org (VS2008 C#.NET用)
右上のDownloadからzipでもダウンロードできます
wordについてるDocument Image Writerがインストールされているマシンなら動くと思う。
■Microsoft Office Document Image Writerのセットアップ
Word2007には入っていたのでCDからインストールしなおした。普通にインストールするとチェックが外れててインストールされない。

続きを読む…


最近のコメント