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