Olá pessoal
Este código exemplo em java preciso passar para um código em C# .
Este programa usa porta serial para imprimir uma relação de cheques.
Não entendi algumas coisas:
szCmds = wdCnt+3; sempre incrementa +3 mas no final iguala a 3 szCmds = 3;
serialPort.writeByte(btCmds[Count]); o comando equivalente no c# não consegui fazer funcionar,
Quanto as listas ( arrays) o funcionamento no c# é igual do java ?
Preciso fazer em c# porque o sistema utilizado desenvolvido já é em C#, vou fazer somente uma customização .
Este pequeno exemplo foi fornecido pelo fabricante da impressora.
*************************** exemplo java *-********************
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);
}
}