none
De Java para C# RRS feed

  • Discussão Geral

  • Bom dia ! 
    Caro  Desenvolvedores,    Preciso desenvolver em c# uma rotina de impressao de cheque para impressora com comandos hexadecimal.  Tenho um exemplo desta rotina  em Java disponibilizado pelo próprio suporte da impressora.

    Portanto precisava passar este exemplo em java para C#  fácil?  Bom não para quem esta iniciando o aprendizado em c# como eu,  estou vindo de outra linguagem.   Portanto conto com a caridade de alguém em me ajudar a  migrar este código para c# ,  tbm ira servir e muito para meu aprendizado.

    *****************************  codigo *********************************

    import jssc.SerialPort;

    import jssc.SerialPortException;

    import jssc.SerialPortList;

    import jssc.SerialPortEvent;

    import jssc.SerialPortEventListener;

     

    public class Deskcheck

    {

    public static void main(String[] args) throws Exception

       {

       System.out.println("Entrou no Main.");

     

       try

             {

             SerialPort serialPort;

             PortNames = new Vector<String>();

     

             String[] portNames = SerialPortList.getPortNames();

             PortNames.clear();       

             for(int i = 0; i < portNames.length; i++){

                   PortNames.add( portNames[i] );

                   }

     

     serialPort = new SerialPort( PortNames.toArray()[0].toString() );

     serialPort.openPort();  //Open serial port

     serialPort.setParams(    //Set params. Also serialPort.setParams(9600, 8, 1, 0);

                                       SerialPort.BAUDRATE_9600  

                               SerialPort.DATABITS_8,

                               SerialPort.STOPBITS_1,

                               SerialPort.PARITY_NONE);

     

             byte btCmds[] = new byte[200];         

             int szCmds, wdCnt;

             String stValue;

     

    //Envia pacote de dados


             btCmds[0] = 0x1B;

             btCmds[1] = '?';     //Pede Status         

             szCmds = 2;       //Comando de 2 Bytes

     

              for(int Count = 0;Count <  szCmds; Count ++)

                   serialPort.writeByte( btCmds[Count]);    //Preferi usar esse modo.

              //serialPort.writeBytes( btCmds);   //Outro modo

                   

    //Aguarda algum retorno

     

              int Idx=0, wdTmo, pmTimeOut = 2000;    //Timeout em miliseg

              byte[] ptData  = new byte[10];

              byte[] Ret = new byte[2];

               

              wdTmo = pmTimeOut;

              while( wdTmo > 0 )

                   {

                   while( serialPort.getInputBufferBytesCount() > 0 )         

                         {

                         wdTmo = pmTimeOut;

                         Ret = serialPort.readBytes(1);

                         ptData[Idx] = Ret[0];                

                         Idx = Idx + 1;

                         }             

                  TimeUnit.MILLISECONDS.sleep(100);

                  wdTmo = wdTmo - 100;

                  }

     

               System.out.println("Dados Recebidos: "+ptData);   

                     

    //Monta comando de um cheque completo

     

                stValue = "001";      //Banco

                btCmds[1] = (byte)0xA2;    

                btCmds[0] = 0x1B;    

                for(wdCnt=0;wdCnt < stValue.length() ;wdCnt++ )

                   { btCmds[wdCnt+2] = stValue.getBytes()[wdCnt]; }

                btCmds[wdCnt+2] = 0x0D;

                szCmds = wdCnt+3;     

                for(int Count = 0;Count <  szCmds; Count ++)   //Envia Dados

                   serialPort.writeByte(btCmds[Count]);

                

                stValue = "123456,00"; //Valor

                obReg.Valor = stValue;

                btCmds[1] = (byte)0xA3;    

                btCmds[0] = 0x1B;    

                for(wdCnt=0;wdCnt < stValue.length() ;wdCnt++ )

                   { btCmds[wdCnt+2] = stValue.getBytes()[wdCnt]; }

                btCmds[wdCnt+2] = 0x0D;    

                szCmds = wdCnt+3;     

                for(int Count = 0;Count <  szCmds; Count ++)   //Envia Dados

                   serialPort.writeByte(btCmds[Count]);            

     

                stValue = "01/01/2018";  //Data

                btCmds[1] = (byte)0xA4;    

                btCmds[0] = 0x1B;    

                for(wdCnt=0;wdCnt < stValue.length() ;wdCnt++ )

                   { btCmds[wdCnt+2] = stValue.getBytes()[wdCnt]; }

                btCmds[wdCnt+2] = 0x0D;

                szCmds = wdCnt+3;     

                for(int Count = 0;Count <  szCmds; Count ++)   //Envia Dados

                   serialPort.writeByte(btCmds[Count]);

                

                stValue = "ERECHIM";  //Local

                if( stValue.length() > 1 ) {               

                   btCmds[1] = (byte)0xA1;    

                   btCmds[0] = 0x1B;    

                   for(wdCnt=0;wdCnt < stValue.length() ;wdCnt++ )

                      { btCmds[wdCnt+2] = stValue.getBytes()[wdCnt]; }

                   btCmds[wdCnt+2] = 0x0D;    

                   szCmds = wdCnt+3;     

                   for(int Count = 0;Count <  szCmds; Count ++)   //Envia Dados

                        serialPort.writeByte(btCmds[Count]);               

                   }

                

                stValue = "FAVORECIDO";  //Favorecido

                if( stValue.length() > 1 ) {

                   btCmds[1] = (byte)0xA0;    

                   btCmds[0] = 0x1B;    

                   for(wdCnt=0;wdCnt < stValue.length() ;wdCnt++ )

                      { btCmds[wdCnt+2] = stValue.getBytes()[wdCnt]; }

                   btCmds[wdCnt+2] = 0x0D;    

                   szCmds = wdCnt+3;     

                   for(int Count = 0;Count <  szCmds; Count ++)   //Envia Dados

                        serialPort.writeByte(btCmds[Count]);

                   }

                

                btCmds[1] = (byte)0xB0;       //Imprime      

                btCmds[0] = 0x1B;    

                btCmds[2] = 0x0D;

                szCmds = 3;     

                for(int Count = 0;Count <  szCmds; Count ++)   //Envia Dados

                   serialPort.writeByte(btCmds[Count]);

     

               serialPort.closePort();

               }

        catch (SerialPortException ex)  { System.out.println(ex); }

       

       System.out.println("Encerrou o Main.");   

       System.exit(0);

       }

    }
    **********************************************************************

    segunda-feira, 9 de setembro de 2019 14:23