<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Si, hola, gracias ya lo resolvi, le estaba mandando los datos a otra PC
que tenia un programita de esas que vienen con los sistemas operativos
escuchando lo qeu le mandaba desde mi otra PC, y cada vez qe mandaba
0x00 se cortaba la cadena, pero lo necesitaba para un dispositivo que
estoy construyendo, pero al final cuando vi lo que estaba mandando lo
estaba mandando bien, se ve que el otro programa cortaba la cadena.<br>
Asi que funciono sin problemas, gracias por las molestias.<br>
<br>
Steven R. Davidson escribió:
<blockquote cite="mid:47D98CDC.4000203@verizon.net" type="cite">
<pre wrap="">Hola Sebastián,
Sebastian Oldani wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Aclaro, si hago una cadena de byte me anda bien.
estoy haciendo asi
byte cadena[16]={0x32,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34};
y envio cadena y me llega al otro lado.
ComPort->Write(cadena,16);
El tema es que si mando un 0x00 me lo envia cortado, como si ese cero
estaria indicando que se termino la cadena. mientras que si mando 0x01
en lugar de los ceros me lo envia bien, el problema es que necesito si o
si enviar esos ceros.
Alguna sugerencia??
</pre>
</blockquote>
<pre wrap=""><!---->
En primer lugar, siempre es aconsejable mandarnos algo de código en
estas situaciones. En segundo lugar, espero que no estés intentando
mostrar la "cadena" en pantalla haciendo algo así:
ComPort->Read( cadena, 16 );
cout << cadena; // O cualquier función equivalente
Esto no representa los valores contenidos en 'cadena', porque 'cout <<'
manipula 'cadena' como si fuese una cadena de caracteres y como no un
array de bytes.
Por otra parte, comprueba que realmente se ha enviado los 16 bytes
guardando el valor retornado por 'Write()'. Por ejemplo,
unsigned int nCant = ComPort->Write( cadena, 16 );
if( nCant != 16 )
cerr << "ERROR" << endl;
Asimismo, aplicamos la lógica a la lectura:
unsigned int nCant = ComPort->Read( cadena, 16 );
if( nCant != 16 )
cerr << "ERROR" << endl;
También deberías comprobar que ambas comunicaciones usan la misma
velocidad de transmisión. Consulta la propiedad 'BaudRate'. Otro matiz a
tener en cuenta es el tiempo de desconexión de la propiedad 'Timeouts'.
Si es demasiada baja, quizá no dé tiempo a una lectura completa.
Espero que esto te oriente.
Steven
_______________________________________________
Lista de correo Cconclase <a class="moz-txt-link-abbreviated" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a>
<a class="moz-txt-link-freetext" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a>
Bajas: <a class="moz-txt-link-freetext" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a>
</pre>
</blockquote>
<br>
</body>
</html>