This message is mostly directed to Mark F, but I'm assuming others might be interested, so I'm posting it here:
Ok, Mark, I have an interesting problem for you, for which I've got a temporary work-around (so no hurry to reply). Here's my setup:
X10 MouseRemote (JR20A and JR21A)
Windows XP SP2
Girder 3.2.9 (installed in C:\Applications\Drivers\Hardware\GirderFree)
WinLUAEx plugin 1.0.11 (installed and active)
Serial plugin 3.0.19 (installed and active)
MouseRemote.ini chosen with default settings, but set to COM1
Serial Mouse device in device manager disabled
I also happen to have the USB-UIRT and associated plugin, but that should be irrelevant.
Here's the solution (to keep you interested in the problem):
- in the Enable Event LUA script, I had to add a line to the end:
- (I also commented out the two lines formerly at the end that Create()ed and Arm()ed the TimerObject.)
So the original problem was that I had the MouseRemote working great with the maX10 software (so I knew things could talk and work). I turned off maX10, installed Girder and associated plugins (listed above), and could never get the MouseRemote to respond. In fact, the light on the receiver never even blinked (even after waiting 15-30 seconds for the receiver to initialize). Additionally, if I hit F9 (to Disable or Enable input devices in Girder), Girder would usually just hang, requiring using Task Manager to kill it.
After much searching to verify that I had the right software, hardware, and settings, I could not find the solution (as listed above) to my problem. For reference, here's some other forum info about the X10 MouseRemote that I perused:
Anyway, what tipped me off was your help for someone else that involved your (very convenient!) Hardware Event Logger. Being a programmer, I was able to decipher what was happening after using your logger. Essentially, it appears that the 1/2-second timer you set never got triggered, thus never re-enabling the MouseRemote (using MouseRemote.CompleteInitilization() which calls SERIAL_SetHandshaking(MouseRemote.DeviceName,3)).
Here's the Girder startup logging trace:
00:09:53.296 Monday, March 07, 2005 EVENT: Dev: 18 GirderEnable
00:09:53.296 Monday, March 07, 2005 EVENT: Dev: 18 GirderOpen
00:09:53.265 Monday, March 07, 2005 LUA: return main
00:09:53.265 Monday, March 07, 2005 LUA: --> return C Arm field
00:09:53.265 Monday, March 07, 2005 LUA: --> call C Arm field
00:09:53.265 Monday, March 07, 2005 LUA: --> return C Create field
00:09:53.265 Monday, March 07, 2005 LUA: --> call C Create field
00:09:53.265 Monday, March 07, 2005 LUA: --> return C SERIAL_SetHandshaking global
00:09:53.265 Monday, March 07, 2005 LUA: --> call C SERIAL_SetHandshaking global
00:09:53.265 Monday, March 07, 2005 LUA: --> return C TIMER_CreateObject global
00:09:53.265 Monday, March 07, 2005 LUA: --> call C TIMER_CreateObject global
00:09:53.265 Monday, March 07, 2005 PRINT: MouseRemote initialization starting
00:09:53.265 Monday, March 07, 2005 LUA: call main
So (forgive my lengthy dissertation--I'm gloating a bit for having figured this out...), my questions to you are:
- Why did my computer/setup never trigger (or even properly create?) the timer and related function call? (Is it related to XP or SP2, or my older version of Girder? Has the calling convention for TimerObject.Create() changed?)
- Is it OK to skip the 1/2-second timeout, and do what I've done? (Essentially, is it OK to go from SERIAL_SetHandshaking(MouseRemote.DeviceName,0) to MouseRemote.CompleteInitilization() with no delay?) My MouseRemote seems to work fine now (only used it for a few hours with this now-working setting)...
- Is there a simpler way (than the timer) that I can pause a 1/2-second, if its necessary/recommended?
- Do you have any guesses/assumptions about why Girder would freeze during the disable/enable? (I'd like to make sure it doesn't happen in the future.)
Thanks so much for your work on the various Girder plugins, and especially for your active forum support!