<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=windows-1252"
 http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Aclaro, si hago una cadena de byte me anda bien.<br>
estoy haciendo asi<br>
byte
cadena[16]={0x32,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34};<br>
y envio cadena y me llega al otro lado.<br>
ComPort->Write(cadena,16);<br>
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.<br>
Alguna sugerencia??<br>
<br>
Sebastian Oldani escribió:
<blockquote cite="mid:47D922F8.40505@gmail.com" type="cite">
  <meta content="text/html;charset=windows-1252"
 http-equiv="Content-Type">
  <title></title>
Hola, gracias por responder, tenian razon, se calcula asi. Me complique
un poco al principio pero ahora lo entendi bien.<br>
Sigo peliando con los puertos, en linux me anda un poco mejor la
comunicacion aunque no pude programar nada todavia. Desde windows me
baje comport de sourceforge para borland y lo instale y me anda
relativamente bien, puedo enviar cadenas de caracteres sin problema.
Tengo dos compus conectadas juntas y lo que envio de una lo recivo sin
problema en la otra, el tema, es que no puedo mandar codigo hexa,
cuando mando codigo hexa llega cualquier cosa, no se como hacer. Trato
de mandar 0x30 0x00 0x00 0x08 ... una cadena de hexas de 16bytes y del
otro lado me llega la mitad bien y la mitad mal. Quiza estoy usando la
herramienta equivocada, con leer en hexa y escribir en hexa me sobra.
Pero no se como hacerlo.....<br>
Si alguien tiene alguna sugerencia por favor se lo agradesco.<br>
  <br>
  <br>
Steven R. Davidson escribió:
  <blockquote cite="mid:47D8BEAA.1070406@verizon.net" type="cite">
    <pre wrap="">Hola Sebastián,

Sebastian Oldani wrote:
  </pre>
    <blockquote type="cite">
      <pre wrap="">Hola, sigo peliando con los puertos, gracias a todos por responder, ya 
voy a ver si lo logro hacer funcionar. Sin embargo ahora tengo una duda 
muy importante, necesito calcular un checksum y no entiendo bien como 
hacerlo. en el manual dice cito textual:

CHECKSUM
This value is calculated by summing the value of the first byte 
(Packet[0]) to the value of 573th byte (Packet[573]) and ‘mod’ by 
256*256. This is to confirm the full packet be received correctly.

Tengo que comprobarlo si o si asi al checksum, porque asi me lo da el 
dispositivo que tengo conectado a mi PC. El checksum es de 2 Byte. No 
entiendo bien como lo debo calcular. si alguien entiende que significa 
ese "mod" y como puedo obtener de eso 2 bytes. Gracias igual
Nos vemos.

    </pre>
    </blockquote>
    <pre wrap=""><!---->
"mod" hace alusión a la operación del módulo de una división; es decir, 
el resto de una división. En C/C++, el operador % realiza esta operación.

Me temo que el texto no está bien escrito. Descubrí la página que 
contiene el PDF con la documentación de la cual sacaste este párrafo. El 
enlace es: 
<a moz-do-not-send="true" class="moz-txt-link-freetext"
 href="ftp://www.ewt.com.tw/NewDownLoad/Chinese/Fingerprint%20Programmer%20Guide%20%28WM-1xx%29.pdf">ftp://www.ewt.com.tw/NewDownLoad/Chinese/Fingerprint%20Programmer%20Guide%20(WM-1xx).pdf</a>

Leyendo parte de la documentación, lo que intentan decir es que se suman 
todos los valores desde el paquete 0 hasta el 574º como máximo. Esta 
cantidad luego es operada por el módulo con 65536. Esto sería algo así:

unsigned long nSuma = suma( paquete, N );
unsigned short nChecksum = nSuma % 65536;


Esto implica que obtendremos un valor entre 0 y 65535 (ambos incluidos) 
como el resultado del "mod". Básicamente esto significa aceptar los 
últimos 16 bits y descartar los demás. Por lo tanto, podríamos usar un 
cásting a 'short int' y así obtener los últimos 16 bits. Por ejemplo,

unsigned long nSuma = suma( paquete, N );
unsigned short nChecksum = (unsigned short)nSuma;

También podrías crear una máscara OR para "filtrar" los 16 bits que te 
interesan. Por ejemplo,

const unsigned long nMascara = 0x0000FFFF;
unsigned long nSuma = suma( paquete, N );
unsigned short nChecksum = nSuma | nMascara;


Espero que esto te ayude.

Steven



_______________________________________________
Lista de correo Cconclase <a moz-do-not-send="true"
 class="moz-txt-link-abbreviated"
 href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true" 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>
</blockquote>
<br>
</body>
</html>