Win32 Dll to control Micro Maestro

I have a MicroMaestro servo controller (6-channel), and would like to create a custom program to control it.
C#, C++, etc are not an option, as I have zero programming knowledge. However, the tool I’m using can call functions from a Win32 dll.

Unfortunately, it seems from this thread:


…that I can’t use the supplied dlls (usc.dll looked like what I needed, which is just a way to initialize the controller, and then to set the servo positions).

I’m just wondering if anyone has created a dll yet that would be suitable, as without one the controller is useless to me? (I’ve looked at the examples, and there’s no way I could convert even the simplest one to a dll)

Any help would be much appreciated :slight_smile:

Hello. I suggest that you use UscCmd, the command-line utility that comes with the Maestro software. Hopefully, the tool you are using can run external executables. What is the name of the tool?

Alternatively, if your tool has support for serial ports then you might be able to send commands to the Maestro’s virtual COM port.

The DLLs we supply will not work for you because they are .NET assemblies rather than Win32 DLLs.

–David

Thanks for the swift response.
I’m using something called “Multimedia Fusion 2” ( www.clickteam.com ). It does have support for serial ports, but I can’t get it to work with the Micro Maestro so far (I’ve posted on MMF2-specific forums for help with that, but it’s not the sort of thing most users will have tried - apart from a one or two maybe, who use one of your competitors’ products).
It also has a .NET extension which ought to allow the running of C# or VB.net code, but again, that would require a fair bit of programming knowledge.
It can run an application with a specified commandline, but that’s far too slow to be practical (and also doesn’t seem to be reliable; plus it pops up a window each time).
It’s just a real shame there isn’t a win32 dll, as I’m sure it would be very useful to a lot of people (possibly more useful than the dlls which are provided).

I’ve tried various methods of communicating via serial, but still without success.
Using the Maestro Control Center, everything works fine. UscCmd.exe also works, but is impractical as it’s super slow and pops up a window.

I just found the Pololu Serial Transmitter, but even that doesn’t work.
I can use the exact same values given in the user guide: “in decimal: 132, 2, 112, 46” (with a servo attached to #2 obviously), and absolutely nothing happens.
Similarly “255, 2, 127” doesn’t do anything (I’d expect it to center servo #2).
I’ve tried different COM ports and even different PCs.

You will need to change your Maestro’s serial mode to “USB Dual Port” in the Maestro Control Center and click “Apply Settings”. Have you done that?

–David

Okay, thanks - that fixed the problem with the Serial Transmitter, but I’m still not really any further forward.
I’ve given up on the idea of serial communication, either using MMF2’s serial object (which can only send strings), or a third-party .dll using MMF2’s DLL object (it can send an integer buffer, but that doesn’t work either).
I’m now looking at using MMF2’s .NET object to call a function from a VB.NET script.
I started with the easy example from the SDK, and tried to strip out all the stuff I don’t need (I just want one function that I can call from MMF2, to set the specified servo to the specified position - no buttons or anything else), and this is what I seem to be left with:

Imports Pololu.UsbWrapper
Imports Pololu.Usc
Imports System
Imports System.Collections.Generic

Public Class Main

    Function TrySetTarget(ByVal channel As Byte, ByVal target As UInt16)
         Using device As Usc = connectToDevice()
            device.setTarget(channel, target)
         End Using
    End Function

    Function connectToDevice() As Usc
        ' Get a list of all connected devices of this type.
        Dim connectedDevices As List(Of DeviceListItem) = Usc.getConnectedDevices()
        For Each dli As DeviceListItem In connectedDevices
            Dim device As Usc = New Usc(dli)  ' Connect to the device.
            Return device                     ' Return the device.
        Next
    End Function

End Class

Any suggestions on why this doesn’t work, and especially on how I can make it work, would be gratefully received.
:slight_smile:

Hello. I don’t immediately see any reason that the code wouldn’t work. How are you running it? What parameters are you providing? How did you expect it to behave and what are you actually seeing? You said you copied it from an example in the Pololu USB SDK; did the original example work for you?

–David

The battery holder just melted :frowning:
I tried a different one, and the batteries are getting really hot in that too…
I appreciate your help, but unfortunately I think I’m done trying to get this thing to work, at least for the time being.