35
ThinkChip Soluciones Vending y Control V1.1 05/2012 Archivo Confidencial Guia de Usuario Convertidor MDB USB En esta guía el usuario encontrará la distribución de la tarjeta, caracteristicas técnicas, así como la forma de utilizar el archivo DLL “SimpleUSB.dll” en un entorno de programación Visual Studio, así como las constantes necesarias para la correcta comunicación con el dispositivo MDB USB. Introducción Hardware La distribución de la tarjeta es el siguiente: Alimentación MDB: 24VDC 2Amp. Conexión USB: 5VDC 500 mA (protección optoaislado). Led Error: Indica Error en Coin Changer, Bill Acceptor, etc. Led MDB: Indica comunicación entre Dispositivos MDB y dispositivo MDB USB. Led USB: Indica comunicación entre PC y Dispositivo MDB USB. Configuración de Billetes Habilitados La tarjeta tiene una serie de switches, las cuales en ellas se puede seleccionar que billete puede aceptar el validador, siendo BIT0 = 20 pesos, BIT1=50 pesos, BIT2=100 pesos y BIT3=200 pesos. Copyright Todos los derechos reservados. ThinkChip

Convertidor MDB USB

Embed Size (px)

DESCRIPTION

Convertidor MDB USBProtocolo MDBGuía de Usuario

Citation preview

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Guia de Usuario Convertidor MDB USB

    En esta gua el usuario encontrar la distribucin de la tarjeta, caracteristicas tcnicas, as como la forma de utilizar el archivo DLL SimpleUSB.dll en un entorno de programacin Visual Studio, as como las constantes necesarias para la correcta comunicacin con el dispositivo MDB USB.

    Introduccin

    HardwareLa distribucin de la tarjeta es el siguiente:

    Alimentacin MDB: 24VDC 2Amp.Conexin USB: 5VDC 500 mA (proteccin optoaislado).Led Error: Indica Error en Coin Changer, Bill Acceptor, etc.Led MDB: Indica comunicacin entre Dispositivos MDB y dispositivo MDB USB.Led USB: Indica comunicacin entre PC y Dispositivo MDB USB.

    Configuracin de Billetes HabilitadosLa tarjeta tiene una serie de switches, las cuales en ellas se puede seleccionar que billete puede aceptar el validador, siendo BIT0 = 20 pesos, BIT1=50 pesos, BIT2=100 pesos y BIT3=200 pesos.

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Instalacin

    Al conectar el dispositivo MDB USB, el sistema operativo Windows tratar de buscar en su base de datos el driver correspondiente, al no encontrarlo, le pedir al usuario que instale manualmente el driver. Para windows XP es automtico la peticin de instalar manualmente el driver, pero en windows vista y seven, se deber instalar desde administrador de dispositivos.

    Al conectar el dispositivo convertidor MDB USB, aparecer en la carpeta de Otros dispositivos, como se ve en la figura:

    Selecciona el dispositivo con botn secundario del ratn, y selecciona Propiedades

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Aparecer una ventana, en la cual seleccionaremos Actualizar controlador....

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Seleccionamos Buscar software de controlador de equipo

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Buscamos la carpeta donde se encuentra el driver llamado Convertidor MDB USB, al aceptar e instalar, aparecer la siguiente ventana, alertando, esto pasa por que en Windows no esta certificado el dispositivo USB, seleccionamos Instalar este software de controlador de todas formas

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Si se ha instalado correctamente, aparecer la siguiente ventana:

    Si se ha instalado el driver exitosamente, se visualizar en Administrador de Dispositivos

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    SoftwareLas funciones y tareas que estn disponibles para esta versin del convertidor MDB USB son las siguientes:

    Inicializacin de dispositivos de cobro Recepcin de monto de efectivo insertado, mediante un evento Peticin de Status de Coin Changer y Bill Acceptor Peticin de Informacin de dinero en tubos en Coin Changer Peticin de Informacin nmero de billetes en stack de Bill Acceptor Habilitacin y deshabilitacin de Coin Changer y Bill Acceptor Envi de monto de cambio en coin changer

    Preparando el ambiente de trabajoAntes de empezar a utilizar el archivo DLL, necesitamos agregarlo a nuestras herramientas, solo necesitamos buscar en la carpeta Software en la direccin donde copiamos los archivos del disco, el archivo llamado SimpleUSB.dll y arrastrarlo en las herramientas de Visual Studio.

    Al seleccionar la nueva herramienta e integrarla a nuestra Form, deberemos de configurar una propiedad llamada GUID.

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Por default tiene 00000000-0000-0000-0000-000000000000, este nmero tiene que modificarse por :a3c4dc3e-683a-4220-9279-cdba089ea343

    Una vez modificado esta propiedad, podrmos empezar a trabajar en el programa.

    En el archivo DLL existen diferentes funciones, a continuacin explicamos cada una de ellas, as como un ejemplo de uso. En los siguientes ejemplos, la herramienta SimpleUSB se le ha dejado el nombre

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    que tiene por default simpleUSB1.

    Conexin y Desconexin de dispositivo

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Para conectar el dispositivo a la interfaz de usuario, se necesita llamar primero a la funcin OpenConnection()Para el siguiente ejemplo del uso de esta funcin, se ha creado un botn, que al llamar al evento _Click se conecta el dispositivo, este metodo puede variar facilmente dependiendo de su aplicacin.

    private void button1_Click(object sender, EventArgs e) { simpleUSB1.OpenConnection(); }

    Para desconectar el dispositivo se necesita llamar a la funcin CloseConnection()Para el siguiente ejemplo del uso de esta funcin, se ha creado un botn, que al llamar al evento _Click se desconecta el dispositivo, este metodo puede variar facilmente dependiendo de su aplicacin.

    private void button2_Click(object sender, EventArgs e) { simpleUSB1.CloseConnection(); }

    Si se ha conectado existosamente el dispositivo MDB USB, se invocar a un evento llamado _onDeviceConnect()Si se ha desconectado exitosamente el dispositivo, se invocar a un evento llamado _onDeviceDisconnect()

    Ejemplo de uso:

    private void SimpleUSB1_onDeviceConnect() { label1.Text = "Conectado"; SimpleUSB1.StartReadingInterruptEndPoint(2, 8); }

    private void SimpleUSB1_onDeviceDisconnect() { label1.Text = "Desconectado"; simpleUSB1.StopReadingInterruptEndpoint(); }

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    En cualquier momento en el programa, podemos preguntar si se est conectado o desconectado el dispositivo con la propiedad booleana DeviceConnected.

    if (simpleUSB1.DeviceConnected = true) { //accin a realizar }

    Comenzar Lectura de datosPara comenzar la lectura de datos provenientes del dispositivo, se llamar a la funcin StartReadingInterruptEndPoint(2, 8)Se recomienda llamar a esta funcin en el evento _onDeviceConnect(), como se ve en el ejemplo de arriba, los parametros (2,8) son datos internos del funcionamiento del dispositivo y no deben de ser modificados.

    Detener Lectura de datosPara detener la lectura de datos provenientes del dispositivo, se llamar a la funcin StopReadingInterruptEndpoint()Se recomienda llamar a esta funcin en el evento _onDeviceDisconnect()

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Inicializacin de dispositivos MDB

    El dispositivo al ser conectado a la PC, empezar a escanear si existen dispositivos MDB conectados como son Coin Changer y Bill Acceptors, en caso negativo, veremos el Led Error parpadear, esto quiere decir que no existe ningun dispositivo conectado, para que el dispositivo pueda escanear correctamente los dispositivos, debe haber desde luego al menos un dispositivo de cobro conectado, y alimentado con una fuente de voltaje de por lo menos 24VDC a 2Amp. En caso de que no se haya conectado la alimentacin de 24VDC y los dispositivos antes de conectar el convertidor MDB USB a la PC, se necesita inicializarlo de nuevo.

    Antes de llamar a la funcin que le dir al convertidor MDB, que, inicialice los dispositivos de cobro, es necesario crear un buffer de datos de salida y de entrada.

    byte[] OutputBuffer = new byte[32]; byte[] InputBuffer = new byte[32];

    Una vez creado estos buffer, se llamar a la funcin WriteData(1, Buffer_de_salida,8)En donde el primer parametro 1 no se modifica, el segundo parametro se refiere a el buffer de salida que se ha creado, y el tercer parametro se refiere al tamao del dato a enviar. En este ejemplo, se presionar un botn, al llamar al evento Click, se preguntar antes de llamar a la funcin, si est conectado el convertidor MDB USB.

    private void button3_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = INIT_MDB_DEVICES; simpleUSB1.WriteData(1, OutputBuffer,8); } }

    La constante INIT_MDB_DEVICES se explicar ms adelante.

    A partir de ahora, la mayora de las funciones tienen una respuesta, la respuesta de la funcin para Inicializar los dispositivos de cobro MDB se concentrar en un evento llamado:_onReadComplete()Al llamarse al evento _onReadComplete, se avisa al sistema que un nuevo dato proviene del convertidor MDB USB, pero an no hemos asociado, hacia donde

    Cuando el dispositivo convertidor MDB USB ha terminado de conectarse e inicializarse con los

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    dispositivos de cobro, responder en este evento, en el siguiente ejemplo, preguntamos en la localidad del buffer [0] si la respuesta corresponde con la inicializacin, en el byte [1] de la cadena, especifica que dispositivos estn conectados.

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8);

    if (InputBuffer[0] == INIT_MDB_DEVICES) { if (InputBuffer[1] == COIN_CHANGER) { label2.Text = "Coin Changer finded"; } else if (InputBuffer[1] == BILL_ACCEPTOR) { label2.Text = "Bill Changer finded"; } else if (InputBuffer[1] == COIN_AND_BILL) { label2.Text = "coin and bill"; } else { label2.Text = "no encontrados"; } } }

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Recepcin de monto insertado

    Cuando se ha recibido dinero desde el coin changer y el bill acceptor, el convertidor MDB USB enviar automticamente el dato a travs del evento _onReadComplete() El dato del monto enviado se enva como el doble, esto quiere decir que si se recibe el dato "2", entonces lo que se recibi en realidad es 1 peso. Esto se hizo para no tener que manejar nmeros con punto decimal en la comunicacin, el dato que se enva es un entero de 16 bits, pero al manejar un buffer de 8 bits, se enva dividido en 2 bytes.

    En el buffer de entrada, que para este ejemplo, tienen el nombre de InputBuffer recibe alrededor de 3 datos, cada uno enviado en el siguiente orden:

    InputBuffer[0] = CASH_INSERTED (constante indicando que el datos enviado, se trata de dinero insertado por usuario)

    InputBuffer[1] = msb (byte ms significativo del monto insertado)InputBuffer[2] = lsb (byte menos significativo del monto insertado)

    En el siguiente ejemplo, se muestra como recibir el dato y guardarlo en una variable tipo int, adems de imprimirlo en una etiqueta, para la visualizacin del usuario.

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8); if (InputBuffer[0] == CASH_INSERTED) { byte msb, lsb; int cash_inserted = 0; float cash;

    msb = InputBuffer[1]; lsb = InputBuffer[2];

    cash_inserted = msb; cash_inserted

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Recepcin de errores en Coin Changer y Bill Acceptor

    En la recepcin de errores que pudiera tener los dispositivos MDB, se requiere de primero realizar la peticin de envio de informe de errores, para realizar esto, se necesita utilizar la funcin WriteData(1, Buffer_de_salida,8)En donde el dato de Buffer_de_salida se reemplaza por el buffer que nosotros hemos creado en nuestro programa, con la constante de envio de datos de errores, como se ve en el siguiente ejemplo, el cual, cada determinado tiempo se estar preguntado por el status de error, utilizando un timer y el evento Tick

    private void timer1_Tick(object sender, EventArgs e) { OutputBuffer[0] = ERROR_STATUS; simpleUSB1.WriteData(1, OutputBuffer,8); }

    La recepcin de la respuesta se recibe en el evento _onReadComplete() En donde el buffer de entrada InputBuffer recibe los datos de la siguiente manera:

    InputBuffer[0] = constante que indica que se recepciona los datos de status de errorInputBuffer[1] = msb (byte ms significativo de error en coinchanger)InputBuffer[2] = lsb (byte menos significativo de error en coinchanger)InputBuffer[3] = ErrorBill (dato de status de error en bill acceptor)

    El ejemplo siguiente demuestra la recepcin del error, y en una etiqueta imprime los status de cada uno de los dispositivos MDB.

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8); if (InputBuffer[0] == ERROR_STATUS) { byte msb, lsb, error; int error_coinchanger;

    msb = InputBuffer[1]; lsb = InputBuffer[2]; error_coinchanger = msb; error_coinchanger

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    error_coinchanger |= lsb;

    InputBuffer[3] = error;

    label4.Text = "Error coinchanger =" + error_coinchanger.ToString() + " Error bill=" + error.ToString();

    }}

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Tabla de constante de errores para Coin Changer, donde Z1 es el byte menos significativo, y Z2 el byte ms significativo.

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Tabla de constante de errores en Bill Acceptor

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Peticin de Informacin de dinero en tubos en Coin Changer

    Para poder saber cuanto dinero hay en los tubos de cambio, en el coin changer, se llamar a la funcin WriteData(1, Buffer_de_salida,8)En el siguiente ejemplo, se utiliza un boton, llamando al evento Click

    private void button4_Click(object sender, EventArgs e) { OutputBuffer[0] = CASH_IN_TUBES; simpleUSB1.WriteData(1, OutputBuffer, 8); }

    En la respuesta, se enviar al evento a _onReadComplete() En el siguiente ejemplo, se lee la respuesta del convertidor MDB USB, los datos los envia de la siguiente forma:

    InputBuffer[0] = constante que indica dinero en tubosInputBuffer[1] = msb (byte ms significativo del dato)InputBuffer[2] = lsb (byte menos significativo del dato)

    El dato viene en un entero de 16 bits, y es el doble del monto real, esto quiere decir que multiplicandolo por 0.5 o dividiendolo entre 2, se tiene el valor real.

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8); if (InputBuffer[0] = CASH_IN_TUBES) { byte msb, lsb; int cash_in_tubes; double money;

    msb = InputBuffer[1]; lsb = InputBuffer[2]; cash_in_tubes = msb; cash_in_tubes

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    }}

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Peticin de Informacin nmero de billetes en stack de Bill Acceptor

    La peticin de informacin de nmero de billetes, nos d el nmero de billetes, no el monto de dinero en billetes. Para pedir est informacin, se utiliza la funcin:WriteData(1, Buffer_de_salida,8)En el siguiente ejemplo, se pide por la informacin mediante el evento Click de un botn:

    private void button5_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = CASH_IN_BILL; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    Recuerden, que es una buena prctica, preguntar antes, s el dispositivo est conectado, antes de enviar la informacin, como se ve en el ejemplo de arriba.

    La respuesta a esta funcin se enviar al evento _onReadComplete() El envo de datos es de la siguiente forma, en el buffer de entrada

    InputBuffer[0] = constante que indica que se trata de billetes en stackInputBuffer[1] = msb (byte ms significativo de nmero de billetes en stack)InputBuffer[2] = lsb (byte menos significativo de nmero de billetes en stack)

    En el siguiente ejemplo, se muestra como leer los datos, e imprimirlos en una etiqueta

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8); if (InputBuffer[0] = CASH_IN_BILL) { byte msb, lsb; int cash_in_bill = 0;

    msb = InputBuffer[1]; lsb = InputBuffer[2];

    cash_in_bill = msb;

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    cash_in_bill

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Habilitacin y deshabilitacin de Coin Changer y Bill Acceptor

    En esta funcin, podemos habilitar o deshabilitar los dispositivos MDB, dependiendo de que se desea habilitar o deshabilitar, se escribe en el buffer de salida, el orden es el siguiente:

    Habilitacin y deshabilitacin de coin changerOutBuffer[0] = constante que indica tarea de configuracin de coinchangerOutBuffer[1] = valor booleano que indica habilitacin= 1 y deshabilitacin = 0

    Habilitacin y deshabilitacin de bill acceptorOutBuffer[0] = constante que indica tarea de configuracin de bill acceptorOutBuffer[1] = valor booleano que indica habilitacin= 1 y deshabilitacin = 0

    En el siguiente ejemplo, se utiliza cuatro botones para habilitacin y deshabilitacin de los dispositivos:

    private void button6_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_COINCHANGER; OutputBuffer[1] = 1; simpleUSB1.WriteData(1,OutputBuffer,8); } }

    private void button7_Click(object sender, EventArgs e) {

    if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_COINCHANGER; OutputBuffer[1] = 0; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    private void button9_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_BILL;

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    OutputBuffer[1] = 1; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    private void button10_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_BILL; OutputBuffer[1] = 0; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Envi de monto de cambio en coin changer

    La funcin de envio de monto, es como su nombre lo dice, devolver cambio de dinero, mediante el coin changer, para utilizar est funcin, se necesita enviar el monto del cambio por dos, esto quiere decir, que si se necesita dar de cambio 10 pesos, se enviar al convertidor MDB USB la cantidad de 20. Esto se hace mediante un entero de 16 bits, dividido en 2 bytes, enviando primero el ms significativo y luego el menos significativo, en el buffer de salida se muestra el orden a ms detalle:

    OutputBuffer[0] = constante que indica que envio de monto de cambioOutputBuffer[1] = msb (byte ms significativo)OutputBuffer[2] = lsb (byte menos significativo)

    En el siguiente ejemplo, se muestra como utilizar esta funcin, mediante un TextBox y un botn para enviar el monto escrito en TextBox, cabe destacar que este ejemplo no tiene ningun tipo de filtro a letras, ya que es solamente demostrativo.

    private void button8_Click(object sender, EventArgs e) { int monto_escrito, monto_enviado; byte msb, lsb;

    monto_escrito = Convert.ToInt16(textBox1.Text); monto_enviado = monto_escrito * 2; msb = (byte)(monto_enviado >> 8) ; lsb = (byte)(monto_enviado & 0xff); OutputBuffer[0] = SEND_CHANGE; OutputBuffer[1] = msb; OutputBuffer[2] = lsb;

    if (simpleUSB1.DeviceConnected == true) { simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    El convertidor MDB USB responder cuando haya terminado el proceso de envio de cambio, no necesariamente tiene que ser exitosa la tarea, y depende del coin changer, ms adelante se muestran las posibles respuestas a la funcin. En el siguiente ejemplo se muestra como se recibe datos desde el evento _onReadComplete() Se debe de esperar a la respuesta del convertidor MDB USB, antes de realizar otra funcin, ya que

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    normalmente tarda entre 1 o 5 segundos en terminar de dar cambio, dependiendo del modelo de coinchanger.

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8);

    if (InputBuffer[0] == SEND_CHANGE) { if (InputBuffer[1] == 1) { label7.Text = "TAREA EXITOSA"; } else { label7.Text = "ERROR NO CAMBIO"; } }}

    El dato enviado en el buffer de entrada en la localidad [1] determina si se realizo exitosamente la tarea de dar cambio, cualquier nmero diferente de 1, ser error y probablemente se tendr que repetir la tarea.

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    CONSTANTES

    Anteriormente en el ejemplo, se habla de unas constantes, estas constantes se definen al principio del programa, para que sea ms entendible para el programador. Las constantes son:

    const byte INIT_MDB_DEVICES = 1; const byte COIN_CHANGER = 1; const byte BILL_ACCEPTOR = 2; const byte COIN_AND_BILL = 3; const byte CASH_INSERTED = 2; const byte ERROR_STATUS = 4; const byte CASH_IN_TUBES = 3; const byte CASH_IN_BILL = 6; const byte SET_COINCHANGER = 10; const byte SET_BILL = 11; const byte SEND_CHANGE = 9;

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    Programa completo de ejemplo

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;

    namespace EjemploMDBUSB{ public partial class Form1 : Form { byte[] OutputBuffer = new byte[32]; byte[] InputBuffer = new byte[32];

    const byte INIT_MDB_DEVICES = 1; const byte COIN_CHANGER = 1; const byte BILL_ACCEPTOR = 2; const byte COIN_AND_BILL = 3; const byte CASH_INSERTED = 2;

    const byte ERROR_STATUS = 4;

    const byte CASH_IN_TUBES = 3;

    const byte CASH_IN_BILL = 6;

    const byte SET_COINCHANGER = 10; const byte SET_BILL = 11;

    const byte SEND_CHANGE = 9;

    public Form1() { InitializeComponent(); }

    private void simpleUSB1_onDeviceConnect()

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    { label1.Text = "Conectado"; simpleUSB1.StartReadingInterruptEndPoint(2, 8); }

    private void simpleUSB1_onDeviceDisconnect() { label1.Text = "Desconectado"; simpleUSB1.StopReadingInterruptEndpoint(); }

    private void button1_Click(object sender, EventArgs e) { simpleUSB1.OpenConnection(); }

    private void button2_Click(object sender, EventArgs e) { simpleUSB1.CloseConnection();

    }

    private void button3_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = INIT_MDB_DEVICES; simpleUSB1.WriteData(1, OutputBuffer,8); } }

    private void simpleUSB1_onReadComplete() { simpleUSB1.ReadInterruptEndpoint(ref InputBuffer, 8);

    if (InputBuffer[0] == INIT_MDB_DEVICES) { if (InputBuffer[1] == COIN_CHANGER) {

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    label2.Text = "Coin Changer finded"; timer1.Start(); } else if (InputBuffer[1] == BILL_ACCEPTOR) { label2.Text = "Bill Changer finded"; timer1.Start(); } else if (InputBuffer[1] == COIN_AND_BILL) { label2.Text = "coin and bill"; timer1.Start(); } else { label2.Text = "no encontrados"; } } if (InputBuffer[0] == CASH_INSERTED) { byte msb, lsb; int cash_inserted = 0; double cash;

    msb = InputBuffer[1]; lsb = InputBuffer[2];

    cash_inserted = msb; cash_inserted

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    error_coinchanger

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    { if (InputBuffer[1] == 1) { label7.Text = "TAREA EXITOSA"; } else { label7.Text = "ERROR NO CAMBIO"; } }

    }

    private void timer1_Tick(object sender, EventArgs e) { OutputBuffer[0] = ERROR_STATUS; simpleUSB1.WriteData(1, OutputBuffer,8); }

    private void button4_Click(object sender, EventArgs e) { OutputBuffer[0] = CASH_IN_TUBES; simpleUSB1.WriteData(1, OutputBuffer, 8); }

    private void button5_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = CASH_IN_BILL; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    private void button6_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_COINCHANGER; OutputBuffer[1] = 1; simpleUSB1.WriteData(1,OutputBuffer,8); } }

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    private void button7_Click(object sender, EventArgs e) {

    if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_COINCHANGER; OutputBuffer[1] = 0; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    private void button8_Click(object sender, EventArgs e) { int monto_escrito, monto_enviado; byte msb, lsb;

    monto_escrito = Convert.ToInt16(textBox1.Text); monto_enviado = monto_escrito * 2; msb = (byte)(monto_enviado >> 8) ; lsb = (byte)(monto_enviado & 0xff); OutputBuffer[0] = SEND_CHANGE; OutputBuffer[1] = msb; OutputBuffer[2] = lsb;

    if (simpleUSB1.DeviceConnected == true) { simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    private void button9_Click(object sender, EventArgs e) { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_BILL; OutputBuffer[1] = 1; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    private void button10_Click(object sender, EventArgs e)

    Copyright Todos los derechos reservados. ThinkChip

  • ThinkChip Soluciones Vending y ControlV1.1 05/2012 Archivo Confidencial

    { if (simpleUSB1.DeviceConnected == true) { OutputBuffer[0] = SET_BILL; OutputBuffer[1] = 0; simpleUSB1.WriteData(1, OutputBuffer, 8); } }

    }}

    Copyright Todos los derechos reservados. ThinkChip