androidのbinderをWindows、Linux、MacOSXで実装する
毎回マニアックなプログラムのネタを書いていて、こんな日記を参考にする人がいるのかなぁと思っていたのですが、結構いるんですね。さて、今日はプロセス間通信の移植の話。androidのIPC(プロセス間通信)は/dev/bindrというバインダーデバイスを介して行われます。androidではC/C++で実装されているネイティブサービスがこのバインダーを通してJavaレイヤと通信を行うのですが、このドライバ...
View Article秋月電子で売っている「RN−42使用 Bluetooth無線モジュール評価キット」でシリアルポートを無線化してみた
マイコンとかのプログラム開発をするときに、PCとマイコンボードをだいたいUSBシリアル変換器でつなぎます。この部分にケーブルがあるととても作業しづらいので、秋月電子で売っている「RN−42使用...
View ArticleUSB2BTでMac-miniとUSBキーボードを無線接続でつないでみた。
以前この日記で、CerevoのEnebrickを使ってUSBキーボードをBluetoothキーボードに変換してMac-miniで使う記事を書いたのですが、この製品、すぐにハングって使い物にならないので、別の製品を使うことにしました。これが今回使うUSB2BThttp://bit-trade-one.co.jp/product/assemblydisk/adu2b01/これを使うといろいろなUSBデバ...
View Article入社二年目のプログラムをなおしてみた。
日本の最高学府の大学院を卒業後、とある会社に入社した二年目の社員が、なぜプログラムが落ちるのかわからなくて悩んでいる。しかももう一ヶ月も。やっぱ、企業ってお金稼ぐことも大切ですが、雇用の安定とか社会的な責任を果たすことも大事ですからね。わかりやすくするためにコードを簡単にするとこんな感じ。#include <stdio.h>void func(int* a){*a=12345;}int...
View Articleセンサー用のケーブルを作ってみた。
スマホで温度とかはかってみようと思い、センサー用のケーブルを考えてみました。左から、センサー、同軸ケーブル、Fコネクター、Fメス・RCAオス変換アダプター、RCA・DIP化キット全部秋月電子や千石電子で買える部品ばかりで、こんな感じで部品をつなげて、センサーケーブルを作ります。Arduinoとかにこのケーブルと、この前ブログで紹介した、RN42シリアルBluetooth変換基板をつなければ、スマホか...
View ArticleZigBeeを買ってみた。
ZigBeeの規格を調べていたら、規格上1500メートル離れたところでも無線シリアル通信ができるようです。さらに、あいだに中継用のZigBeeを挟めばさらに遠くまで無線シリアル通信できるようです。 ZigBeeで遊んでみたくなったのでさっそく実験基板を秋月電子で買ってみました。まずこれ、Xbee...
View ArticleRaspberry Pi とか Arduino 高くない?
最近、ちょっとしたブームになっている、Raspberry Pi とか Arduino。日経新聞によると安くて小さくて遊べるから人気らしいです。電子工作世代にブーム 超小型PC「ラズベリーパイ」http://www.nikkei.com/article/DGXMZO79030620Z21C14A0000000/Raspberry Pi...
View ArticleSwiftでもC++でもコンパイルできるようにHello Worldを書いてみた。
プログラム言語Swiftを勉強していたら#ifが使えるらしいことが書いてありました。これは、SwiftでもC++でもコンパイルできるソースコードが書けるのではないかと思い、早速両方のコンパイラでコンパイルできるHello...
View ArticlePIC32MX用の開発ボードを作ってみた
PIC32MXマイコンを使って、いろいろ組み込みのプログラムをしてみようと思い、LEDをチカチカさせられる、通称「Lチカ」開発ボードを作ってみました。回路図はこんな感じです。すべてのPIC24とPIC32MXのデータシートに目を通して、多くの種類のPICにプログラムを書き込んでLEDを光らせるように設計したつもりです。あとは、あしながのピンソケットを買って、こんな風に基板にとりつれば、Arduino...
View Articleプラたくに行ってきた
もう一か月以上たってしまいましたが、2015年のよーめー日記は一般のファミリー層の人も楽しめる内容を書いて、広告費を稼ぐと心に決めたのでした。ということで、ファミリー層でも楽しめる日記第一回。葛飾区立石にある、男の子に大人気のプラレールが楽しめる喫茶店、「プラたく」に行ってきました。この喫茶店にはたたみ一畳程のスペースにプラレールが展示してありまして、自分のプラレール車両を走らせて遊ぶことができます...
View Article基板を作ってみた
ここ数年、回路図と基板を作っていたなっかので、暇つぶしに作って見ました。bschv3の回路図エディターでネットリストを出力して、CadlusXでアートワークしてみました。LPC1114FN28用のマイコン開発基板。LPC1114FN28ですが、秋月電子で140円で売っている、ARM32ビットマイコン。すごい安いです。これでいろんなことできそう。
View Articleハイサイドスイッチを作ってみた
最近僕のまわりではIOTが流行っているようで、ラズベリーパイなどからいろいろなデバイスの電源をON/OFFする回路を作りたいという質問をよく受けます。FETかトランジスタを使ってハイサイドスイッチを作れば良いのですが、ネットで調べるとどれも微妙に回路図が違うので、どれが良いのか迷うようです。Webで実行できる回路図シュミレータCircuitLab(https://www.circuitlab.com...
View ArticlembedでLEDチカチカしてみた
この前のブログで、32ビットARMマイコンのLPC1114FN28を使った開発基板を設計しました。P板.comに基板を注文したら数日で基板が納品されてきました。さっそく、自分で設計した基板でLEDチカチカするARMプログラムを書き込みしてみました。mbedの開発環境はこんな感じでWeb上の開発環境でソースコード管理とコンパイルができるのでとても面白いですね。-----------------#inc...
View ArticleWebでプログラムを書いてコンパイルできるようにしてみた
最近Webのブラウザ上でプログラムを開発できるサービスとかが増えています。これができるようになった理由は、数年前にACEというブラウザのJavaScriptで動く、テキストエディターが登場したからです。みんなこのブラウザ上のエディターを使っていろいろな開発サービスを作っているようです。ということで、僕もACEを使ってプログラムをコンパイルするサーバを立ち上げてみました。クライアント側はHTMLとJa...
View ArticleJavaのRuntime.exec(String cmd)をスペース対応する
ITFFFとかいうサービスを使ってみようと思い、ブログに投稿するとFacebookにも自動で投稿するように設定してみました。なので久しぶりに技術ブログを更新。JavaのRuntime.exec(String cmd)メソッドはとっても便利なのですが、cmd文字列の中のファイル名やコマンドオプション文字列にスペースが入っている場合に動作がおかしくなります。cmd="ls...
View ArticleJavaScriptで他のファイルをincludeする
昨日に続きいろいろな言語のめんどくさい部分をどうにかするシリーズ。JavaScripの中から別ファイルのJavaScriptを読み込みたいときがよくあります。複数人で作業するときや、スマホ対応するときに読み込むJavaScriptファイルを動的に変えたり。いつもHTMLの中に読み込むJavaScriptファイルを固定的に書くのはとてもめんどくさい。JavaScripファイルを分割して読み込みたい要求...
View ArticleJavaScriptで他のファイルをincludeする2
前回、JavaScriptで他のファイルをincludeする方法について簡単に書きました。しかし、前回の方法では複数のファイルにinclude関数が宣言されていた、以下のように同じファイル名がある場合に多重にファイルをincludeしてしまいあまり実用的ではありません。include("test.js");include("test.js");そこで、今回は前回の関数をすこし修正し、これらの問題を解...
View ArticleTensorFlowを勉強中
先日Googleが公開した機械学習ライブラリであるテンソルフローについて毎日こっそり勉強中です。まだざっとしか見れていないのですが、機械学習を行う時に問題となる、どのように一台のPCから複数のPCで分散処理をさせるかとか、どのように学習結果を視覚化するかとか、PCで学習させたデータをどのようにスマートフォンで使うかなど、他の機械学習のライブラリで問題となる点を全部解決しているように思えます。すごすぎる。
View ArticleAndroid NDKのatof()問題
AndroidにはCランタイムライブラリのatof()関数がある機種とない機種があります。正確にいうとatof()関数がインライン展開される機種とされない機種があります。これらの関数を使うプログラムでは、ランタイムライブラリとNDKのバージョンが合わず動かないことがあります。D/dalvikvm(18948): Trying to load lib...
View ArticleProtocol Buffersを使ってC++でRPCをやってみた
Googleが作っているProtocolBuffersは、異なるPC間やプロセス間で関数コールやデータのやり取りをするライブラリです。いろいろな言語で動くので、サーバ間で分散処理を行うのにとても便利です。Googleのサーバ側の分散処理の最も重要な中核な技術といっても過言ではないと思います。ProtocolBuffersを制するものはサーバを制します。しかしC++でこのProtocol...
View Article