[C con Clase] Puerto Serie

Sebastian Oldani sebastianoldani en gmail.com
Jue Mar 13 15:18:29 CET 2008


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

Sebastian Oldani escribió:
> Hola, gracias por responder, tenian razon, se calcula asi. Me 
> complique un poco al principio pero ahora lo entendi bien.
> 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.....
> Si alguien tiene alguna sugerencia por favor se lo agradesco.
>
>
> Steven R. Davidson escribió:
>> Hola Sebastián,
>>
>> Sebastian Oldani wrote:
>>   
>>> 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.
>>>
>>>     
>>
>> "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: 
>> ftp://www.ewt.com.tw/NewDownLoad/Chinese/Fingerprint%20Programmer%20Guide%20(WM-1xx).pdf
>>
>> 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 Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>>   
>

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080313/05dda765/attachment.html>


Más información sobre la lista de distribución Cconclase