[ Foro de C ]
Necesitamos procesar un conjunto de datos disponibles en un vector
unsigned char bytes[200]
(Tiene 200 bytes cómo máximo)
Contiene mensajes para procesar.
Cada mensaje comienza con # y finaliza con &
Luego de # tiene cuatro dígitos hexa
Los tres primeros son los bytes alto, medio y bajo de un número.
El cuarto es la verificación (xor) aplicada solo a los dígitos hexa.
char bytes[] = "#A00A&#F40BԖ&"
A00 verificación A = 2560
F40 verificación B = 1111 xor 0100 xor 0000 = 3904
130 verificación 2 = 0001 xor 0011 xor 0000 = 304
Hacer una función que devuelva los valores de 12 bits (int) correctos (que verifique correctamente, que no termine antes de lo esperado, que no tenga dígitos inválidos)
err = darvalores(bytes, valores, &cant_validos);
Devuelve cantidad de errores (err) y los valores válidos guardados (cant_validos).
queda: valores [2560, 3904, 304]
…….
Hacer otra función que reciba los valores y eliminé los valores menores a min y los mayores a max
err = filtrar (valores, min, max, &cant);
filtrar(valores, 400, 3500)
queda: valores [2560]
……..
Alguno sabe como resolverlo??
hola fede
si no he entendido mal el array bytes son caracteres ascii,
lo primero en darvalores seria encontrar un '#'
luego comprobar si los tres dígitos son correctos
comprobar el dígito de control
comprobar el de final de dato '&'
si ha habido algún fallo marcar error
si no calcular el valor decimal y contar como correcto
y seguir recorriendo el array hasta llegar al final '200'
la segunda función es más sencilla,
si esta entre los valores cuenta como correcta
si no cuenta en errores
suerte ;-)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)