プログラミング
右クリック→「名前の変更」で、ソリューション名、プロジェクト名、名前空間名などは変更できるが、プロジェクト名を変更してもプロジェクトのフォルダ名は元のままで、実害は無いけどもカッコ悪い。そこで手動で変更する方法をメモ。 Visual Studioを閉じる…
もうEclipseで開発なんて古いだろうけど、いちおうメモ。 [File]>[Export]>[Android]>[Export Android Application] [Project Checks] で、出力するプロジェクトを選択 [Keystor selection] で、初回は電子署名を新規生成 [Create new keystor]で、保存先、…
すぐ忘れるので、メモ 実数は"F". "F4"としたら小数第4位まで. 整数(10進数表示)は"D". "D8"としたらゼロ埋め8桁 (負号も桁に含む) 整数(16進数表示)は"X". "X8"としたらゼロ埋め8桁 【追記】 string.Format()のほうがsprintf()感覚で使えて便利? str = Str…
C/C++のコードがセグメンテーションフォールト(セグフォ)で落ちる場合、突然プロセスが死ぬのでどこで問題が発生したのか分かりにくいです。そんなときに有効な手がかりとなるのがコアダンプです。 GCCでデバッグ情報つきでコンパイルする (-gオプション) $ …
組込みのARM9用にOpenSSLをビルドする手順メモ。(じゃっかん古い内容を含んでいます…) ソースのダウンロード https://www.openssl.org/source/ からソースをダウンロード]する。 (執筆時点で最新版は openssl-1.0.1l.tar.gz) ビルド ホスト環境は、Ubuntu10.…
昨日、Kansai.mrb 2014 Decに参加してきました。LTでしゃべった内容をうpしておきます。
組込みでスクリプト言語を使うことには消極的だったのですが、このところC++でWebAPIサーバを実装する苦行の日々で、少々C++に倦んできました。ここらでmrubyなどやってみようかと思い立ちました。まずはPCのUbuntu上で使って感じを掴んでみようと思います。…
20年くらい日々使っていながら、UNIX/Linuxのパイプの振る舞いをよく分かってませんでした。『易経』に「日に用いて知らず」というのはこれです。ちょっと簡単なコードで実験してみました。 リスト1 test1.c #include <stdio.h> int main(void) { int i; for(i=0;i<5;</stdio.h>…
組込みLinuxのC++でネットワークインターフェース(有線LAN/無線LAN)の設定を行なうクラスを作成しました。といっても、ほとんど ifup/ifdown/ifconfig/iwconfigなどのコマンドをC++から叩いてるだけの超テキトーなラッパーです。 ソース NetIf.h NetIf.cc te…
1 SIGHUP 端末との接続が切断された(Hangup) 2 SIGINT キーボードからの割り込み(Interrrupt) 3 SIGQUIT キーボードからのプロセスの中止(Quit) 4 SIGILL 不正な命令(Illegal instruction) 5 SIGTRAP Trace / breakpoint trap 6 SIGABRT abort関数 8…
INIファイルって古くさいものですが、単純なフォーマットゆえに手で簡単に編集できるので、今でも使いたい場合があります。 LinuxでC言語だと、GlibライブラリにINIファイル(Key-Valueファイル)を扱うAPI関数が用意されているのですが、微妙に扱いが面倒くさ…
&&と||によるifを使わない条件分岐、シェルスクリプトではよく見るけど、C言語でやられるとちょっと戸惑う。でも英語だと、"and"と"or"を「ならば」「さもなくば」の意味で使うし、あんがい自然な表現なのかもしれない。(いや、C言語ではこんなトリッキーな…
BLEの開発では、独自定義のサービスやキャラクタリスティックにUUIDを定めないといけません。そこで、UUID生成ツールについてメモ。 (2023/5/27加筆修正) Linux コマンドラインツールのuuidgenを使います。 $ uuidgen -r # 乱数ベースのUUID生成 $ uuidgen -…
リポジトリの作成 ブラウザでGitHubにログインして、自分のページの[Repositories]タブで[New]ボタンを押す。必要事項を記入して、[Create repository]ボタンを押す。 Gitクライアントでリポジトリをチェックアウト GitクライアントとしてはSource Treeなど…
ActivityにViewを配置する Javaのみで protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... // Viewのインスタンスを生成 (アプリのコンテキストを参照して ) HogeView myView = new HogeView( getApplication()…
起動したActivityから結果を返してもらう 【要点】 startActivityForResult()で起動したActivityは、終了時に起動元にIntentを送り、起動元のonActivityResult()が呼ばれる。 /* 起動元 */ // なんかボタンが押されたら public void onClick(View v) { // こ…
タイトルバーとステータスバーの非表示 (AndroidManifest.xmlで) AndroidManifest.xml の かに下記の属性を記述する。 ・タイトルバー非表示 android:theme="@android:style/Theme.NoTitleBar"・タイトルバーとステータスバー非表示 android:theme="@android…
APIレベルとAndoidのバージョン Android 4.4.2 API 19 KitKat Android 4.3 API 18 Jelly Bean Android 4.2.2 API 17 Jelly Bean Android 4.1.2 API 16 Jelly Bean Android 4.0.3 API 15 Ice Cream Sandwich Android 4.0 API 14 Ice Cream Sandwich Android 3…
Andoidアプリで、通信(USB,Bluetooth,WiFi)を誰が持つかという問題について。 ※ アプリ苦手なのでいろいろ間違ってるかも。ご意見いただけると幸いです。 Activity 簡単なサンプルソースだとだいたいActivityで持ってます。しかし、画面遷移のあるアプリで、…
バッファのフラッシュは大事ですね。通信相手の挙動が怪しいときは特に。 // Linuxのシリアル通信プログラムの一部 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <unistd.h> ... // シリアルポートのハンドラ int handle; if((handle = open("/dev/tty0", O_RDWR</unistd.h></termios.h></fcntl.h></sys/stat.h></sys/types.h>…
LinuxのC言語でシリアル通信に使うtermios構造体のc_cflag変数についてメモ。 数値はもしかしたら環境依存です。後に示すプログラムを実行して確認しました。 名前 値 説明 CBAUD 0x0000100F ボーレートのマスク。値は※1 CSIZE 0x00000030 データ長のマスク…
自分は組込み屋なのでC/C++は年中使ってて文法や標準関数忘れることはあんまりないけど、めったに使わないJavaやC#なんかはすぐ忘れてしまう。なので、ちょっとメモ。 Java // #include <stdio.h> import java.io.*; // putc, puts, pfintf System.out.println("Hello</stdio.h>…
符号の乗算が排他的論理和なのは信号処理屋にとっては言ふも更なりだし、ちょっと考えれば当たり前なんだけど、まぁ一見さんは戸惑うかもね。 /** * CRCを計算する(バッファされたデータを一気に計算) * * CRC-16-CCITT計算 * 生成多項式=x^16+x^12+x^5+1 (…
BASE64のエンコード/デコードをC言語で書いた。 /** * BASE64変換プログラム(マイコン用) * * マイコン用なのでメモリの動的確保(malloc)はあえてしません。 * また実行時の計算とRAM使用を極力減らしています。 */ //! BASE64エンコードテーブル static con…
C言語のポインタにまつわる文法は、べつに難しくはないけどいろいろ紛らわしいです。const char* と char* const なんかも紛らわしいと思います。(char* const なんてあまり使いませんけど。) 「宣言では * は左側にかかる」と覚えておけばいいですね。 型 …
はてなのMML記法とPC-8801のN88-BASICのMMLと、いろいろ違いますね。MMLに方言差があるということは聞いていたし、ハードウェアの性能差がある以上それは当然だと思ってけど、まさかオクターブの上げ下げの記号が逆とは思わなかった! (はてなでは あと、ゲ…
PC-8801エミュレータ*1のウィンドウにキーイベントを送って、テキストファイルに書かれたN88-BASICプログラムをPC-8801に入力するという無理矢理なプログラム。しょーもないプログラムだけど、何かに応用できることもあるかもしれないので挙げておきます。 …
やっつけ仕事ですが、RGB⇔YCbCrの換算と色見本のツールをHTML5で書いてみました。 RGB⇔YCbCr換算と色見本
恥ずかしながら、電気電子系で組込み屋のくせにキャリーフラグとオーバーフローフラグについての理解があやふやでした。ちょっとまとめます。 符号なしならCF、符号つきならOF まず第一に、キャリーフラグは符号なし加算で意味を持ち、オーバーフローフラグ…
もちろん、三平方の定理により平方根を求めれば良いだけなのですが、次のようなアルゴリズムにより四則演算のみで計算できます。Moler-Morrisonアルゴリズムというらしいですが、結果をみるとかなり収束が速いですね。 #include <stdio.h> #include <stdlib.h> /** * 直角三角形</stdlib.h></stdio.h>…