Buenos Días a Todos, 

 

Recurro a la lista ya que tras probar infinidad de posibles soluciones no logro 
dar en la tecla y ya me preocupa un poquito el tema.

 

Estoy realizando una aplicación que debe enviar una palabra a un equipo que 
tiene un puerto escuchando, el problema es el siguiente:

 

Según la documentación la palabra a enviar debe contener la siguiente 
estructura:

 

STX – Palabra – CR , donde STX es un carácter que indica que lo que sigue 
detrás es la palabra a transmitir y CR el fin de la misma, la palabra es la 
siguiente 000600000001F9 por lo que quedaría STX000600000001F9CR, ahora alguien 
experimento algo similar ¿? El DAC que es el equipo con el que intento dialogar 
contesta solamente si el paquete es correcto con una palabra similar, pero solo 
si es correcto, como aun no pude crear el Carácter STX ( Ascii = 02 ) no me 
contesta nunca.

Otra duda es como transmitir el mismo, si de un saque o bit a bit , adjunto 
ejemplo.

 

************************************************************** Función en VB

 

Private Const vbSTX As Char = CChar(ChrW(2))

Private Const vbCr As Char = CChar(ChrW(13))

 

Function prueba() As String()

 

        Dim STX As String = vbSTX

        Dim CR As String = vbCr

 

        Dim VEC(1) As String

        

        VEC(0) = STX

        VEC(1) = CR

 

        Return VEC

 

End Function

 

**************************************************************** FIN Funcion

 

 

************************************************************  Programa en C#

 

String[] VECSTX = new clsDataAccessVB.Class1().prueba(); //llamado a la 
function de VB de arriba

              

TcpClient tcpclnt = new TcpClient();                              

tcpclnt.Connect("xxx.xxx.xxx.xxx", xxxxx); //Ip + puerto

                

System.IO.Stream stm = tcpclnt.GetStream();

 

***************************** Con esto tres intentos se probo lo expuesto

 

byte[] ba = System.Text.ASCIIEncoding.ASCII.GetBytes("02000600000001F90D");  // 
02 = STX en el mapa ASCII, 0D es = a CR en el mapa de ASCII                     
          

//byte[] ba = System.Text.ASCIIEncoding.ASCII.GetBytes("☻000600000001F9\r");  
// ☻ = símbolo STX en el mapa ASCII, \r = 0D es = a CR en el mapa ASCII 

//byte[] ba = System.Text.ASCIIEncoding.ASCII.GetBytes( VECSTX[0]  + 
"000600000001F9" + VECSTX[1] );  

 

stm.Write(ba, 0, ba.Length);   //ACA SE REALIZA EL ENVIO        

 

byte[] bb = new byte[1000];

int k = stm.Read(bb, 0, 1000); //RECIBE LA RESPUESTA SI ES CORRECTO EL ENVIO

 

String CadenaDAC = "";

for (int i = 0; i < k; i++)

CadenaDAC += Convert.ToChar(bb

lo unico que habria que cambiar es la parte del STX y CR

 

 

 

Se agradece comentario alguno o si alguien vivió esto y lo tiene solucionado, 
su experiencia.

 

Saludos a Todos.

Juanma.-

Responder a