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基板がいるので大抵は問題ないんだけども。