Hola el STX es el CHR$(2) (quiere decir Start TeXt) y seguramente debe tener un 
ETX (End of TeXt) que es el CHR$(3), yo lo utilizo para comunicarme con las 
registradoras donde cada \"paquete\" de datos comienza con un STX y termina en 
un ETX. Ademas a veces utilizan una rutina de control de error (o CLR) para 
calcular un byte que permite saber que los datos enviados son los correctos 
(generalmente se hace con una rutina de XON).
Saludos
Alvaro


Mensaje citado por: \"Carrasco, Juan Manuel\" <[EMAIL PROTECTED]>:

> 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.-
>
> 

__________________________________
Registrate desde 
http://servicios.arnet.com.ar/registracion/registracion.asp?origenid=9 y 
participá de todos los beneficios del Portal Arnet.

Responder a