2009-07-02 14 views
8

Para alguna interoperabilidad con una aplicación POS heredada, me preguntaba si era posible implementar un dispositivo falso OPOS en C#.Implemente el dispositivo OPOS en C#

Básicamente implementaría un teclado falso que tomaba solicitudes web y pasaba las pulsaciones de teclas a la aplicación heredada.

¿Alguien sabe si esto es posible o dónde obtener la documentación? Pensé que OPOS acaba de llamar a los objetos COM que están configurados por claves de registro. Todos los cuales deberían ser implementables en C#.

+0

¿alguna vez hizo que esto funcionara? Acabo de hacer lo mismo, mi interfaz C# puede ser instanciada por algunos Objetos de Control Común pero no por otros. Gracias. –

Respuesta

11

Sí, es ciertamente posible.

Puede desarrollar un OPOS SO (Objeto de servicio) que implementa la interfaz COM que espera OPOS en C#. Esto puede implementar la API de la manera que desee.

Sugiero que descargue Objetos de control común OPOS de Curtiss Monroe desde http://monroecs.com/oposccos.htm.

Esto le proporcionará las bibliotecas de tipos que necesita implementar para sus objetos de servicio, y probablemente tenga algunos enlaces a la documentación de OPOS. NB Creo que OPOS usa el enlace tardío, por lo que deberá implementar una interfaz dual.

Una advertencia: IMHO OPOS es técnicamente una API horrible, diseñada por un comité de vendedores periféricos para exponer las capacidades de sus periféricos en lugar de proporcionar una abstracción útil para los desarrolladores de aplicaciones POS.

Un ejemplo particularmente llamativo de esto es el llamado dispositivo ToneIndicator, que expone las capacidades de un generador de tonos en un teclado de Fujitsu a sonar una secuencia repetida de dos tonos de diferente tono y el volumen.

ACTUALIZACIÓN

he implementado Servicio OPOS objetos antes, pero ha sido un largo tiempo. Aquí hay más información para comenzar con un POSKeyboard SO.

  • El Objeto de control (CO) cargará su Objeto de servicio (SO) utilizando el enlace de último momento. Entonces, de hecho, no hay un COM IID o biblioteca de tipos que implemente. En su lugar, debe implementar todos los métodos y eventos necesarios definidos en la versión adecuada de las especificaciones OPOS (por ejemplo, uno de los documentos en esta página: http://monroecs.com/oposreleases.htm). La siguiente información se basa en la 1.6 Guía del Programador de Control (CPG) vinculada en esta página.

  • El Capítulo 2 de la GPC describe lo que necesita implementar. Tenga en cuenta que OPOS utiliza un método extraño para obtener/establecer propiedades. Mientras que el Objeto de Control (CO) expone propiedades con nombres razonables (por ejemplo, DeviceEnabled, DeviceName, DeviceDescription), todos invocan los mismos métodos GetPropertyString (para propiedades de cadena) o GetPropertyNumber (para propiedades de entero), pasando un "índice de propiedad" entero como un argumento que define qué propiedad se va a recuperar. Los "índices de propiedad" están definidos en los archivos de encabezado suministrados con el estándar OPOS.

  • Con un vistazo rápido a la fuente de CCO PosKeyboard, los nombres de método que necesita implementar se enumeran en s_SOMethodNames en el archivo de origen POSKeyboardImpl.cpp.

  • Las entradas de registro que debe configurar están definidas en el apéndice de la Guía del programador de aplicaciones OPOS (APG) "Uso del Registro OPOS".En su caso, deberá crear una clave de registro HKLM \ OleForRetail \ ServiceOPOS \ POSKeyboard \ DefaultPOSKeyboard (donde DefaultPOSKeyboard es el nombre del dispositivo donde está pasando el método Open). Esta clave de registro debe tener un valor predeterminado que sea el ProgId de su clase SO. También puede almacenar otros valores allí (por ejemplo, información de configuración utilizada por su SO).

Buena suerte con esto: será un proceso doloroso con un montón de WTF.

+1

¡Genial! Pensé que mi pregunta podría no ser respondida, ya que OPOS es bastante antiguo ... He estado viendo este sitio monroecs por un tiempo, tiene mucha información (y es un poco confuso), pero no es lo que específicamente necesito . no he descubierto exactamente a cabo: a) ¿Qué interfaz COM para poner en práctica a partir del cual DLL (que asumen POSKeyboard de algún tipo) b) ¿Cómo registrar mi DLL para OPOS a utilizar (sé HKLM \ OleForRetail \ ServiceObjects es el lugar, solo necesita un doc) d) Finalmente quiero cargar la aplicación POS (solo usa el LDN de DefaultPOSKeyboard), y ver mi código C# emergente en algunos MessageBoxes – jonathanpeppers

+0

PD - sería bueno implementar la característica de prueba implementada por muchos dispositivos desde la aplicación de configuración OPOS. – jonathanpeppers

+0

"la aplicación de configuración OPOS" - ¿qué aplicación de configuración? – Joe

Cuestiones relacionadas