秋月電子で3方向加速度センサー(Kionix KXR94-2050)を遊びました。このセンサーはX、Y、Z三つの方向での検出した変動値をアナログとして出力できるため、ArduinoやAVRマイコンのAD変換端子付のPINに接続し、そのままデータを読み込めます。さらにArduinoの場合COM接続もArduinoボードに搭載されているため、PC側はCOMポートの入力内容を分析し動きを画面に描画できます。
Strong Name厳密名付きプロジェクトを他のPCでビルドする際のエラー
Strong Name厳密名付きプロジェクトをその厳密名証明書作成以外のPCでビルドする際に下記のようなエラーが出ます。
Cannot import the following key file: companyname.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_0123451234567890
修正方法
スタートメニューから「Visual Studio 2012」⇒「Visual Studio Tools」⇒「Developer Command Prompt for VS2012」を起動しコマンド入力画面が表示されます。以下のコマンドを実行してください。
sn -i certificate.pfx VS_KEY_0123451234567890
要求されるパスワードを入力し以下のような結果が表示されたらエラーが解消します。
Read More
AVRマイコン+VS1011E 自作MP3プレーヤー
秋月電子でVS1011EのMP3デコーダーを見て、MP3プレーヤーを自作できそうだと思いました。ネットで調べたら既に先輩たちが作成した例をみつけて、データシートやネット文書などを参照しながら自分のMP3プレーヤーも作成できました。 VS1011EはMP1、MP2、MP3、WAV、PCMのフォーマットを320 kbit/sまで再生することができます。AVRマイコンからSPI通信回路でVS1011Eに繋いで、コマンドバースでVS1011Eへの制御が可能です。コマンドで主に以下のことを制御することができます。
- 再生開始
- 音量制御
- 低音、高音の強調
構成
再生するMP3ファイルは事前にパソコンからSDカードに保存して、AVRマイコンがSDカードから読込んでVS1011Eに転送します。SDカードのファイルを読込するためにChaN氏のPetit FAT File System Moduleを利用しています。プレーヤー全体の構成は下図のようです。
C#文字列の簡単可逆暗号化アルゴリズム
今回では文字列をより安全に保存したり、インターネットで転送したりするための簡単暗号化アルゴリズムを紹介いたします。
発想
Base64は8ビットエンコーディングを6ビットエンコーディングに変換するアルゴリズムです。Base64ではデータを生成する際にプレーンテキストのプロトコルでもデータの転送可能のため、プレーンテキストのみを利用しデータの文字列を生成しています。その利用可能なアルファベットはBase64のエンコーダーとデコーダーに事前定義されています。WikipediaのBase64の「変換表」のところをご参照ください。
ネコ技術は6ビットエンコーディングを5ビットエンコーディングに変更し、内蔵のアルファベットの変換表もBase64標準の変換表以外の内容に変更します。この方法で自分だけのプログラムしか認識できない暗号化アルゴリズムを作成します。 Read More
Windows向けソフトウェアのコードサイン証明書の署名方法
コードサイン証明書が用意できましたらひとつの.pfxファイルになります。Windows向けソフトウェアのEXEやDLLなどをコード証明書を署名する際に、Signtool.exeというツールを利用すると簡単にできます。
Signtool.exeはMicrosoft Visual StudioまたはMicrosoft Windows Platform SDKをインストールした場合自動的にシステムにインストールされます。署名する際に必要なものは以下の通りです。
- コード証明書PFXファイル
- コード証明書パスワード
- コード証明書発行機関タイムスタンプURL(Time-stamp URL)
- Signtool.exe – Microsoft公式の署名ツール
- 対象ファイルEXE、DLLなど
1と2の証明書PFXファイルとパスワードをコード証明書の管理者からもらいます。3のタイムスタンプURLについて一般的にコード証明書の発行機関のホームページに掲載しています。分からない場合コード署名書の管理者や発行機関にお問い合わせください。
C#で文字列のサイズを正しく測定する(Measure String)
問題の再現
.NETのGraphics.MeasureStringメソッドを利用すると文字列のサイズを測定できますが、通常の方法での測定結果に少しずれが発生します。ここでは正確の測定結果を得る方法を説明します。
まずテスト環境を作成します。新しいWindows Formプロジェクトを作成し、Formのコードを以下のように準備します。(Form7をForm1に変更してください)
public partial class Form7 : Form { public Form7() { InitializeComponent(); Font = new Font(Font.FontFamily, 14); Size = new Size(300, 250); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); var g = e.Graphics; var str = "文字列を測定する"; // ----ここはテストコード---- } }
Global.asaxのApplication_Errorが呼び出されない
開発環境でGlobal.asaxのApplication_Errorでエラー処理を実装して正常に動作しましたが、本番環境で動作しません。いろいろ試したら、IIS7以降のWebSiteの設定について、Web Applicationのアプリケーションプールを「Classic .NET AppPool」に切替すると問題が解消しました。
さらに試したら、実際そのアプリケーションプールの設定の「パイプラインモード」という設定を「クラシック」にすれば問題解消します。
このようにGlobal.asaxのApplication_Errorでアプリケーション全体のエラーを処理することができます。
public class Global : System.Web.HttpApplication { protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); if (ex is HttpUnhandledException) { // ... } } }
Linuxサーバーを介してインターネットをアクセスする
LinuxサーバーへのSSHログインの権限があれば、そのサーバーを介してインターネットにアクセスすることができます。
PuttyというSSHクライアントソフトを利用し、ローカルProxyサーバーの構築ができます。
Puttyのダウンロード先:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html (putty.exeを選択する)
ダウンロードが終わったらputtyを起動します。以下のような手順で設定を行います。