C#

正規表現で部分文字列の抜き出し

C#

<life rfid="0107c3c495" contentsid="15" value="onTag"/> public static string extractRfid(string messageFromAir) { string rfid = ""; if (Regex.Match(messageFromAir, "<life.* rfid=\"([a-zA-Z0-9]+)\".*/>", RegexOptions.IgnoreCase).Success) { rfid = Regex.Matches(messageFromAir, "</life.*></life>

ディレクトリ内の画像ファイルの選択

C#

using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; // フォルダ選択ダイアログ FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "ディレクトリを…

文字列のURLエンコード

C#

System.Web.HttpUtilityを使う using System.Web; string origin = "あsdf<dsf>/df\"dsf<@.sdaf>あああああ"; Console.WriteLine(origin); string encoded = HttpUtility.HtmlEncode(origin); Console.WriteLine(encoded); string decoded = HttpUtility.HtmlD</dsf>…

DirectSoundでFormがActiveでない時も音を出す

DirectSoundのSecondaryBufferにwaveのbyte配列を書き込んで音を出しているんだけど マイクで取った音をUDPで送って別のマシンのスピーカから再生させる - 橋本詳解 DirectSoundのDeviceの持ち主として関連づけられているControl(この場合はSystem.Windows.…

マイクで取った音をUDPで送って別のマシンのスピーカから再生させる

ManagedDirectXのDirectSoundでマイクを拾ってUDPに詰め込んでネットワークに流し、受け取った側で再生させる例。 ハウリングの防止とか、認証とか何もしてない。圧縮もせず44.1KHzのwaveをだだ流ししてるだけ。 送信側 using Org.Shokai.Net; VoiceChat cha…

DirectSoundで音が出たり出なかったり問題

http://d.hatena.ne.jp/shokai/20090617/1245213253 の device.SetCooperativeLevel(owner, CooperativeLevel.Normal); の部分、 device.SetCooperativeLevel(owner, CooperativeLevel.Priority); にしないと他のデバイスが先に音声出力使ってる時に音が出せ…

白黒画像とbyte配列の変換

C#

白黒2値なので、1byteに8ピクセル入る。元が1ピクセルRGBで3byteだったので24倍圧縮 C#だとbyte型の各bitに直接アクセスできなくて辛い。ひどいことになってしまった。どうみてもほとんど差がないコードでも、ちょっと変えるだけで「byteをintにキャストでき…

ShaperCV使う時の注意

C++でOpenCVをDLL化する方法があるから俺はもう使わないけど、詰まった所を書いておく 開発は2003年で止まっている、cxcoreの配列系の関数がまるごと無い このへん http://opencv.jp/opencv-1.0.0/document/opencvref_cxcore_init.html#cxcore_arrays_alloc_…

CvImageからBitmapへの変換

highgui使いたくないので、OpenCVで画像処理して結果は.NETに持ってこよう。 public Bitmap cvImageToBitmap(CvImage img) { return new Bitmap(img.Size.width, img.Size.height, img.Size.width * 3, PixelFormat.Format24bppRgb, img.getPixelAddr(0, 0, …

SharperCVでカメラ表示画面を出す

これ http://shokai.org/projects/opencv-study/index.cgi/file/bafff35d077a/SimpleCapture/image.cpp #include <stdio.h> #include <highgui.h> int main(int argc, char** argv) { CvCapture *capture; IplImage *frameImage; char windowNameCapture[] = "Capture"; capture </highgui.h></stdio.h>…

アプリケーション起動パス

C#.NETでは実行ファイルがあるディレクトリパスを System.Windows.Forms.Application.StartupPath で取れるが、コンソールアプリでもこれを使う為だけにSystem.Windows.Formsを読み込まなければならない。monoでのパッケージはこれ sudo apt-get install lib…

Genericsの要素をComparisonで並べ替え

C#

Comparisonには-1,0,1の3つを返す関数を登録する List<FileInfo> files = new List<FileInfo>(); foreach (FileInfo file in dir.GetFiles("*.jpg")) { files.Add(file); } Comparison<FileInfo> comp = new Comparison<FileInfo>(delegate(FileInfo a, FileInfo b) { int an = extractInt(a.Name); i</fileinfo></fileinfo></fileinfo></fileinfo>…

felicalib.dll使う

C#

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using FelicaLib; namespace Feli…

デフォルトコンストラクタが無いクラスを継承

C#

ThreadBaseを継承するとき、ThreadBaseに引数なしのコンストラクタが無いと 'Org.Shokai.Threading.Thread' に、引数を '1' 個指定できるコンストラクタがありません。になるので namespace Org.Shokai.Threading { public class Thread : ThreadBase { publ…

角度←→ラジアン

C#

public static float dir2Rot(double angle) { return (float)(angle/180*Math.PI); } public static double rot2Dir(float radian) { return (double)(radian*180/Math.PI); } 良く忘れるので http://support.adobe.co.jp/faq/faq/qadoc.sv?228615+002 [度…

円形

中心と周囲361個の点が必要 private const int VERT_NUM = 362; // 円形 vertexBuf = new VertexBuffer(typeof(CustomVertex.PositionTextured), VERT_NUM, device, Usage.None, CustomVertex.PositionTextured.Format, Pool.Managed); // 円形、プール自動…

三角形回った

http://www.atelier-blue.com/program/mdirectx/3d/3d01-10.htmくるくる Macbookではハードウェアで頂点処理できないっぽい device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, // softwareで頂点処理 presentParam);…

DrawPrimitivesでVertex描画

ここの解説が超わかりやすい。 http://www.atelier-blue.com/program/mdirectx/3d/3d01-08.htm VisualStudio2008(C#3.0)だと微妙に関数/アクセサ名が違うのがあって、調べながらちょっとずつ変えながらやってるとりあえず三角形出した using System; using S…

Direct3D準備

http://www.atelier-blue.com/program/mdirectx/3d/3d01-02.htm Microsoft.DirectX Microsoft.DirectX.Direct3D Microsoft.DirectX.Direct3DX System.dll System.Drawing.dll System.Windows.Forms.dll を追加 using System.Windows.Forms; using System.Dra…

非同期http get

C#

http://shokai.org/projects/httpnet/ using Org.Shokai.Web; using System.Web; AsyncWebRequest asyncReq = new AsyncWebRequest(); asyncReq.encoding = Encoding.UTF8; asyncReq.onResponse += (ResponseDelegate)delegate(Response res) { Console.Writ…

URLEncode

C#

System.Web.dllを参照し using System.Web; String encoded = HttpUtility.UrlEncode("あああああ");

HttpLib.Net

C#

なんかhttp postするだけで大変なので作りはじめた http://shokai.org/projects/httpnet/hg/ 俺がWebRequestして得たいものはStreamじゃなくてStringなんです http get/post get postのパラメータ簡単につけれる basic認証、digest認証を通れる 非同期リクエ…

Basic認証

C#

使えるようにした asyncReq.auth = new NetworkCredential("user","pass"); asyncReq.get(new Uri("http://secret.com/basicauth/")); get/postする前にauthに追加するだけ

FacebookAppを作る デスクトップ版

C#

デスクトップアプリも作ってみる Facebook Developer Toolkitを使うと.NET系(C#/C++/VB.NET)でfacebookアプリが作れる http://www.codeplex.com/FacebookToolkitdllをbinaryで落としてきて、Facebook.Controls.dllとFacebook.dllを参照に追加して まず認証…

PING打つ

C#

using System.Net.NetworkInformation; public Boolean ping(String serverAddr) { try { Ping p = new Ping(); PingReply reply = p.Send(serverAddr); p.Dispose(); if (reply.Status == IPStatus.Success) { return true; } } catch(Exception ex) { trac…

PictureBox.ImageLocation

C#

urlやファイル名で指定できる PictureBox pic = new PictureBox(); pic.ImageLocation = "http://asdfasdfasdfsdf.com/jkdajflajsdfj.jpg"; ロード中に終了する時は内部のthreadを明示的に終了させないといけないので pic.Dipose(); 解放するとok

DirectShow.NET2.0でデバイス選ぶ

C#

foreach (DsDevice ds in DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice)) { Console.WriteLine(ds.Name); } 名前が取得できる便利すぎて馬鹿

DirectShow.NET2.0でwebcamキャプチャ、JPEG保存

C#

しばらく見ないうちに2.0になって神ライブラリになってた。神。C#からカメラ使うのほんと大変だったのよ… http://directshownet.sourceforge.net/ DirectShow.NETとsourceforgeにあったサンプルに入ってたCapture.csを一緒に使った。 環境はVS2008+C#3.0 usi…

ThreadManager

C#

たくさんのスレッドを管理するのに便利なので公開 実装はC#だがdllにしたのでC++、VBなどでも使えるhttp://shokai.org/projects/threadmanager/ using Org.Shokai.Util.Thread; ThreadManager thManager = new ThreadManager(10); // 10個管理する スレッド…

プリプロセッサ

C#

#if DEBUG emulatorToolStripMenuItem.Visible = true; #else emulatorToolStripMenuItem.Visible = false; #endif