contents
- Workaround
- 原因と思われるもの
- で、Windows VMでは…
- そういえば、FreeBSD VMでは…
WindowsとCOM10
- 2009年02月07日(土)
PicoBoardがうまく使えてないWindowsマシンで、これを使えるようにできないか試してみる。
このマシンでは、PicoBoard付属のUSB SerialがCOM10として認識されていて、Scratch側からはまったく認識できない。
Workaround
割り当てられたCOMポートの内容確認について教えてください。を参考にした。
以下の説明よりも、 USBシリアルポートのポート番号を変更するの方がわかりやすい。
とりあえず、該当デバイスをUSBに刺した状態でデバイスマネージャを起動すると、ポート(COMとLPT)の中に、そのデバイスが表示される。 ここで、右クリックのメニューからプロパティを選択する。 ポートの設定タブの詳細設定ボタンをクリックすると、COMポート番号を選択できるので、(COM1からCOM9の範囲で)適当なものを選択する。
これで、とりあえず利用可能になる。
この方法で、別のコンピュータでCOM10に割り当てられていたDWM200805基板も無事利用できるようになった。
原因と思われるもの
COM10 以上のシリアルポートを指定する方法が原因だと思うのだけども、まだWindows VMのソースは確認していない。
しかし、ScratchのCOMポート選択は、COM1からCOM32まで選択できるんだけども、ほとんど意味が無いような気がするなぁ…
で、Windows VMでは…
Win32 Squeakで、最新のSqueakVM-Win32-3.10.10を持ってくる。
これだな。
- platforms/win32/plugins/SerialPlugin/sqWin32SerialPort.c
(snip)
wsprintf(name,TEXT("COM%d"),portNum);
port = CreateFile(name,
GENERIC_READ | GENERIC_WRITE,
0, /* comm devices must be opened with exclusive access */
NULL, /* no security attrs */
OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
0, /* no overlapped I/O */
NULL /* hTemplate must be NULL for comm devices */
);
(snip)
こんな感じで、直るような気がするけど、実際にbuildはしていない。
vaio [ win32/plugins/SerialPlugin ] % diff -u sqWin32SerialPort.c.20090207 sqWin32SerialPort.c
--- sqWin32SerialPort.c.20090207 2009-02-07 19:29:21.000000000 +0900
+++ sqWin32SerialPort.c 2009-02-07 19:29:54.000000000 +0900
@@ -84,7 +84,7 @@
success(false);
return 0;
}
- wsprintf(name,TEXT("COM%d"),portNum);
+ wsprintf(name,TEXT("\\\\.\\COM%d"),portNum);
port = CreateFile(name,
GENERIC_READ | GENERIC_WRITE,
0, /* comm devices must be opened with exclusive access */
そういえば、FreeBSD VMでは…
Scratchのシリアル指定は上記の様にCOM1からCOM32なんだけども、COM1はttyS1(まあ、USBなので実際にはttyU1とか)に割り当てられるので、実はシリアルポートはcom1として認識して無いと使えなかった気がする。
まあ、私の場合は、com0にはGainerとかDWM200805基板がいるので大抵は問題ないんだけども。