Home AMX User Forum AMX Technical Discussion

Duet Module vs. XDD Device Driver

Potentially silly question, but can anyone explain how the Device Driver would be used, and how it's implementation would differ from that of a JAR file? I have some newer Epson laser projectors (PU1007W) and there are no Duet modules listed (yet), but there is an XDD. I'm sure I could use an older module as Epson has historically been pretty good about commands remaining the same, but I went looking for a current module as I was curious about added features/functionality.



  • HARMAN_ChrisHARMAN_Chris Posts: 598
    edited May 2023

    An XDD module is an enhanced duet module. There is only 1 driver design .jar file - it is a swiss army knife capable of spinning up at runtime and learning what it is supposed to be/do. This module is embedded within your Netlinx Studio install, and why you do not have to define it in your project file structure. However, you do define the xdd file for the driver. This is an XML file that contains all of the information about what your driver should behave like. One nice part about this file is that it is human readable, and something that can be edited by hand or via the Driver Design program. A long running complaint behind duet modules is that they are closed off and you cannot edit them. In many cases, you need to field modify something that may be sending PON and you now need it to be PON! -- an XDD let's you do this. Although originally designed to take on any duet device type, the Driver Design tool as it sits today only exposed the configuration elements for display or projector device types. The module is ready for more, but the front end will only set up a display device.

    Implementation differers only in the define_module defintion. When you download an xdd, there is an interface document that shows the proper declaration needed under the SAMPLE NETLINX section. A traditional module will have a virtual device and a physical device, but the XDD requires a 3rd passed parameter to point to the proper XML file for the controller to apply to this universal driver.

    CHAR MyXDDFile[] = 'Barco_Video_Projector_PFWU-51B_1.0.0.xdd'
    DEFINE_MODULE 'DeviceDriverEngine' MyDevice(vdvMyDevice, dvSerialPort, MyXDDFile)
  • Find attached a little sample how multiple XDDs would be implemented (change file back from txt to axs).

  • Also don't note that the .xdd file needs to be transferred across to the NetLinx controller - just once, no need to send it every time code is sent.

  • DrewUthDrewUth Posts: 7

    Thanks much for the replies! Reading them along with the interface document, I understand it all now. A few extra steps but the functionality (for my needs) will be the same. Cheers!

Sign In or Register to comment.