Our software interfaces to the Pololu Micro Mastro 6 Servo Controller is through the “Pololu Micro Mastro 6 Servo Controller Command Port (Com#)”
This is found under Device Manager; Ports (COM & LPT)
Installation of the “Maestro Servo Controller Windows Drivers and Software” also defines a “Pololu USB Devices; Pololu Micro Maestro 6-Servo Controller” and a “Ports (COM & LPT); Pololu Micro Mastro 6 Servo Controller TTL Port (Com#)”
So to make it clear we are using the “Servo Controller Command Port (Com#)” from out application as a serial comm port. Under Windows 7 & Windows 8 we can send and receive data on this comm serial comm port from our application with no problem, but running exactly the same software under Windows 10, we encounter a problem where we can open the comm port, send data successfully, but we get no data back when we issue commands that should return data. If fact no commands return any any data running on Windows 10. Under Win 7 & 8 all of the above works correctly. Is there a new driver of some sort for windows 10?
We have not tested the Maestro on Windows 10 yet, but it is something we would like to do soon. The Microsoft-supplied driver that handles the Maestro’s virtual COM ports is called usbser.sys. That driver was rewritten in Windows 10, so it is possible that its behavior has changed in some way.
Are you sure that the Maestro was able to receive the commands you sent? If not, I recommend checking that the Maestro is in the right serial mode and has the right serial settings. I would also check that the software is connecting to the correct COM port.
Even though your code worked on earlier versions of Windows, there could be some problem in your code that prevents it from receiving data from the new version of usbser.sys. You might try using the Pololu Serial Transmitter utility for Windows to send commands to the Maestro and see if you can get a response.
I tried their utility connecting to the serial control port (Com4) in our config, using both 115200 and 9600 baud as shown in their examples with their serial app and neither returned data! When connecting to the TTL port, sending AA 0A 02 there was also no data returned. But their utility can be used on Windows 10 to reproduce the problem.
The bytes 0xAA, 0x0A, 0x02 do not form a valid Maestro command because the third byte does not correspond to any of the command bytes documented in the user’s guide. Also, the Maestro would ignore the command completely if its device number is not 10. Could you try sending a simple Get Position command to the Maestro’s command port? The bytes to send would be 0x90, 0x00.
With their test app i’m now getting data returned when I send 0x90 0x00 I get back 60 17; if i change the baud rate from 115200 to 9600 sometimes I get 00 00 other times I get 60 17. Curious. After resetting hardware and using baud 115200 I always get back 60 17 now.
What should the baud rate and flow control setting be for Maestro 6 now? We previously used 9600, N,8,1
BTW: Our app is still not getting any data back with baud 9600 or 115200?
Both responses you got are valid. A response of 0x00, 0x00 means the position is 0, which means the servo channel is disabled. A response of 0x60, 0x17 means that the position is 5984 (1496 microseconds). You can do the hex-to-decimal conversion by typing “0x1760 in decimal” into Google. The response you get from the Get Position command should match what is shown for channel 0 in the Status tab of the Maestro Control Center.
Since you are communicating with the Maestro using its virtual COM port, I do not expect the baud rate and flow control settings to make a difference. Using 9600,N,8,1 should work.
Since the Pololu Serial Transmitter Utility worked for you, the problem is most likely in your code rather than in the Maestro or its drivers. If you could simplify your code down to the simplest possible program that should work but doesn’t, and post it here along with a description of its expected and actual behavior, then I might be able to see the problem.