Search code examples
c#opos

C# OPOS Common Control Objects backwards compatibility with Service Objects


I'm currently developing an application that will be using the Monroe Consulting Services Common Control Objects package for OPOS Devices. I've read on the website that these are all backwards compatible with all of the previous releases.

"This release supports all OPOS APIs from Release 1.01 through Release 1.13."

I know that some of the method calls have changed through the years of development, but that's not what necessarily concerns me, I can adapt for that. I'm just confused at whether or not the 1.13 version of the CCO's will work with older versions of the Service Objects provided by vendors.

Our older piece of software was pointed at multiple versions of the CCO's and everything is working properly, but with this upgrade, we're trying to unify everything under one common scheme as opposed to using Control Objects bundled with vendor hardware. I've already tested the 1.13 drivers on an Epson TR-24942 and everything seems to be working. If anyone could shed some more light on this topic, it would be greatly appreciated.

Does changing the CCO's necessarily mean having to update the Service Objects?


Solution

  • The good news is that old Service Objects will continue to function with the new versions of OPOS Common Controls. You do not need to update the Service Objects if you already have all the functionality you require.

    However, you have to understand the functions provided in newer versions of OPOS won't be supported by the older service objects. For example, you might try to use the CapSlpRuledLine() method on the POS Printer interface, because it exists in 1.13. But if your service object doesn't support it, the Common Controls will return an OPOS_E_EXTENDED error, and the value in ResultCodeExtended() will be OPOS_EX_SOVERSION.

    It is also possible that a newer version of OPOS might deprecate an old function that you used to rely on. In that case, if your code continues to use the deprecated function, you will get an OPOS_E_DEPRECATED error.