- キット各種完売。
- msBerryDAC改造情報
2007/07/07(土)プラットホーム汎用で、固定長の整数型を使う
int型は整数型ですが、int や long や long long などは環境によってサイズが違ったりします。これらの型は、元もとサイズ(バイト長)を固定する目的で作られたものではないからです。
プラットホーム汎用でプログラムを書く際、固定長のデータを扱う時(バイナリデータ列など)は特に注意する必要があります。C99という規格で固定長整数型として int32t などが規定されましたが、すべての環境で使えるわけではありません。また Windows プラットホームならば、__int32 などが利用出来ますが、Windows以外では利用出来ません。
自分は、だいたいの環境でうまく動くマクロを作って、これを使っています。
#if defined(__C99__) || (defined(__GNUC__) && __GNUC__ >= 3) # include <inttypes.h> # include <stdint.h> #else # if defined(__GNUC__) typedef short int16_t; typedef unsigned short uint16_t; typedef int int32_t; typedef unsigned int uint32_t; typedef long long int64_t; typedef unsigned long long uint64_t; # elif (_MSC_VER || __BORLANDC__) typedef __int16 int16_t; typedef unsigned __int16 uint16_t; typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; # endif #endif
Linux/ソフト系
2007/06/20(水)舐めたネジの外し方
ネジが錆びてしまったり、サイズの合わないドライバーで無理矢理まわしてネジ頭を舐めてしまったときのネジの外し方です。ちなみにこの「舐める(なめる)」というのは独特の言い回しで、ドライバーがネジ頭の溝に引っかからず滑ってしまう状態を示します。
ネジ外しの基本
さび付いてしまったりして、固くなってしまったネジを外すとき。回す力をいくら加えてもネジは外れません。このような固くなったネジを無理矢理ドライバーで回そうとすると、ネジ頭を破壊してネジを外せなくなってしまいます。
大切なことはネジを強く押さえつけながらネジを回すことです。教えてもらったのですが、世の中にはインパクトドライバー(非電動式/ハンマー式)と言ってたたきつける衝撃で左に回るドライバーがあるそうです。*1
舐めるネジを外す
錆びて脆くなったネジや、固くなったネジを無理矢理ドライバーで回したりしてネジ頭が壊れたネジは外すのが非常に困難です。
ネットで検索すると、ネジ頭を破壊してしまったネジを開けるためいくつかの方法が示されています。
- 溶接する。
- ドリルで破壊する。
- ネジ回し用接着剤を使う
- 小ネジプライヤーで外す
などがあるようですが、一番お手軽な方法を一つ紹介します。金ノコでネジ頭に溝を作ってマイナスドライバーで回す方法です。
地味な方法ではありますが、金ノコ以外の特殊工具が必要ありませんので結構応用範囲が広い方法です。
ただ、溝(くぼみ)の中にあるネジなどには使いにくい方法ですが不可能ではありません。小型マイナスドライバーなどの固い金属で(時間はかかりますが)少しずつキズを付けていけばマイナスの溝を掘ることができます。*2
そもそも
錆びる可能性のある場所では、ステンレスネジを使いましょう(上の写真で外したネジはすべてステンレスネジに交換しました)。
2007/06/19(火)ハミング符号のメモ
ハミング符号(15,11)の生成行列。
生成多項式
生成行列の元データ
0001 : crc=03h 0011 0002 : crc=06h 0110 0004 : crc=0Ch 1100 0008 : crc=0Bh 1011 0010 : crc=05h 0101 0020 : crc=0Ah 1010 0040 : crc=07h 0111 0080 : crc=0Eh 1110 0100 : crc=0Fh 1111 0200 : crc=0Dh 1101 0400 : crc=09h 1001
生成行列(先頭11行省略、左がbit0、右がbit10)
p1 = [10011010111] p2 = [11010111100] p3 = [01101011110] p4 = [00110101111]