ブログ - 最新エントリー

COMポートネタ

カテゴリ : 
その他
2011-5-6 17:21
最大は256までらしいが、255で正常に稼働せず。
まぁWindowsで256個もCOMポートを開くことはないが、Vistaが入ったPCで知らぬ間に使えるCOMポートが無くなっていたので、ちょっと調べてみたらとんでもない事に。どうやらBluetoothでペアリングを繰り返しているうちに、自動的に削除されていると思っていた仮想COMポートが、幽霊のように残っていた事が判明。
デバイスマネージャは通常接続されていない装置はリストに列挙されないが、環境変数"devmgr_show_nonpresent_devices"を追加し"1"を設定した後、デバイスマネージャで「非表示のデバイスの表示」にチェックを入れると、今まで見えなかったゴミもろとも表示される。

あとは片っ端から二度と使われることのないデバイスを一つ一つ手動で削除するだけだが、必要な物まで削除してしまわないように。
なお、Windows 7以降ならBluetoothデバイスのペアリングで追加されたCOMポートは、そのBluetoothデバイスを削除すれば一緒に無くなる模様。

ついでと言っては何だが、ちょっとだけプログラムネタ。
自前でCOMポートを扱うプログラムを作ろうとすると、設定項目とAPIのボリュームで結構大変。大そうな事をする訳でも無いのにプログラムの行数だけは増えてゆくもの。なんていうネタがあったので、至極単純なシリアルターミナルを数十行で作ってみた。
イベントやブロッキング・タイムアウトなんぞ一切無視して、全てポーリングで処理して無限ループするだけの代物。まるでマイコンのプログラムの様だw
#include <signal.h>
#include <windows.h>
#include <conio.h>

int term = 1;

void signal_handler (int signo) {
(void)signo;
signal (SIGINT, signal_handler);
term = 0;
}

void main (void) {
int i;
char c = 0;
HANDLE h = CreateFile ("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
DCB dcb = { BaudRate:115200, ByteSize: 8, Parity: NOPARITY, StopBits: ONESTOPBIT, };
COMMTIMEOUTS timeouts = {0,0,0,0,0};
COMSTAT stat;
DWORD l;
UCHAR buf[500];

if (h != INVALID_HANDLE_VALUE) {
signal (SIGINT, signal_handler);
if (SetCommState (h, &dcb)) {
if (SetCommTimeouts (h, &timeouts)) {
while (term) {
if (kbhit ()) {
c = getch ();
WriteFile (h, &c, 1, &l, NULL);
}
if (ClearCommError (h, NULL, &stat)) {
if (stat.cbInQue > sizeof (buf)) stat.cbInQue = sizeof (buf);
if (ReadFile (h, &buf, stat.cbInQue, &l, 0) != 0) for (i = 0; i < l; i++) putchar (buf[i]);
}
Sleep (5);
}
}
}
CloseHandle (h);
}
}
COMポートやボーレート等は適宜変更して、GCC Developer Liteのコンパイラオプションを開き、設定リストから「x86 (Console)」を選んでコンパイルすればWindowsのコマンドプロンプトで動くexeファイルの完成。終了するにはCtrl+Cを押してね。
まかり間違うとOSの負荷だけ上がってPCが熱暴走しかねないが、こんなおバカな代物でも時には使い道があるやも知れないので、備忘録として載っけておく。ってかTera TermやSimple Termでいいじゃん。

FDIII-HC Toppers版 かなり良い感じ

カテゴリ : 
TOPPERS
2011-4-18 1:26
昨年ちらっと触れたネタですが、ここに来てやっと完成度が上がってきました。互換性よりも利便性と性能向上が目的だったため、あるべき姿に近づいてきたかと思います。
残念なお知らせとしては、今後FREEDOM IIIライブラリはFDIII-HC専用として提供する事になりますので、旧来のSAM7S I/Oボードでのサポートは現在リリースしているGCC Developer Liteで終了となります。
さらに、最新FREEDOM IIIライブラリを使用するには、FDIII-HC本体のブートローダのアップデートが強要されます。これはブートローダにおいてSDカードを活用するための機能拡張が主になります。

とりあえずこんな感じにコーディングできれば楽しいじゃないですか。

といった所が現在予定している大きな更新ネタです。

AX-18Aへの対応

カテゴリ : 
新商品
2011-4-11 19:20
AX-12+のハイパワー・ハイスピード版といった位置付けにあるDynamixel AX-18Aの販売準備中ですが、Dynamixel Configurator Ver1.7.3.0以前において一部未対応の部分がありましたのでVer1.7.4.0にて先行対応しました。

厚み

カテゴリ : 
雑記
2011-4-9 16:04
何年かぶりに見た某誌の薄さに、色々思うところアリ。

SAM7S向けのDXLIBへの要望

カテゴリ : 
雑記
2011-4-5 0:51
SAM7SのEVBFDIII-HCであまり仰々しい事を強いらせずに使ってもらうつもりだったSAM7S向けのDXLIBですが、昔からイマイチなツクリだった事のと、詳細なアラームステートがわかるPC用のDXLIB2と似た構成でのAPIを提供して欲しいという要望もあって、広範に見直しているところです。

なお、DXLIB_SAM7SをいじるとFREEDOM IIIライブラリにも影響があるのと、サンプルコードもかなり修正が必要なので、もう少しだけ諸々検証してからGCC Developer Liteをアップデートします。

原発

カテゴリ : 
その他
2011-3-31 9:24
何か起こる前に全原発を安全に停止させて廃炉してくれ
リサイクルに回せないゴミは受付お断り
だからと言って不法投棄何ぞするな

もう原発の恩恵なんぞいらない

ユニバーサルドライバ3出荷準備中

カテゴリ : 
その他
2011-3-25 20:10
こんな時こそ助けにならなければならないロボットはいまだ何の役もかけない。とても辛い・・・。さらに計画停電が続く中、 四苦八苦しながらUD3の在庫充填準備中。。

今回から適用されるリビジョンE093Cからは、モータ用電源の有無を回路内で判断しゲートを駆動するので、モータ用電源が印可されない状態で不用意に動かしてもゲート回路が過電流に陥る事は軽減される予定。

なお、大事なパーツの一部が東北で作られていたりするが、それにもかかわらずある程度まとまった数が準備できたので、必要な時にショップをのぞいていただければ在庫無しという事はないはず。


それと、ついでと言ってはなんだが、dxlib2dxconfuss3confもアップデート済み。

DXCONF改良ネタ2

カテゴリ : 
雑記
2011-3-7 20:59
今のままではシリアルエラーとなる時におかしげになるでしょう。
まだ腐ってるなぁ。という事で、もうちょっと見直します。
ってか端っから自分で作ればよかったか・・・。
Dynamixel Configurator等でも使用しているFTDI社製のUSBシリアル変換チップですが、デバイスドライバが古いためにアプリケーションからはマトモに通信できない様に見えてしまうケースが散見されます。
こちらには2種類の方法でデバイスドライバをインストールできると書いてありますが、現時点で最新版のデバイスドライバはZIPファイルでのみ提供されていますので、「必要に応じて都度デバイスドライバをインストールする場合」の手順に従ってください。
また、更新したつもりでも挙動がおかしい場合は、なぜかドライバファイルが古いままになっているといったことが原因だったりしますので、削除ツールで一旦ドライバを削除した後にPCを再起動してから再度新しいデバイスドライバをインストールし直す事を推奨します。

DXCONF改良ネタ

カテゴリ : 
雑記
2011-3-2 0:18
既に公開されているdxlib2にはいくつか既知のバグが残ってはいますが、このdllを使用したDynamixel Configuratorに改造中です。
ついでと言ってはなんですが、今までConfiguratorとして「どしてそうなっとらん?」「どしてできんの?」だった挙動を片っ端から漁って対処していく気分になってきたので、リリース版では行方不明になっていたDynamixelが見つかるなんて事になるやもしれません。

dxlib2の修正と合わせて公開しますので、もう数日待っててください。