Java para C-Sharp

10/09/2019

0

Boa Tarde,
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 é igual no c# certo?

*************************** 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);
}
}
Juliana Carneiro

Juliana Carneiro

Responder

Posts

07/10/2019

Stella Oliveira

Boa Tarde,
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 é igual no c# certo?

*************************** 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);
}
}


Olá Juliana, este projeto é público? Se sim, tem disponível no Git?
Este projeto não parece estar completo, olhando assim somente pelo main da aplicação fica complicado ajuda-la.
Por exemplo, esse "PortNames" isso é uma classe correto? o que há dentro dela? Só getters e setters?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar