Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Como separar una cadena de caracteres en varias cadenas
07-01-2014, 08:01 PM,
#1
Como separar una cadena de caracteres en varias cadenas
Buenas tardes a todos:
Acabo de empezar a trabajar con Pinguino y como es logico tengo un montón de dudas que poco a poco voy solucionando.
en este momento estoy tratando de comunicar un pinguino 32bit micro con el PC en modo CDC, y con visual Basic, hasta el momento el envió de datos en ambas direcciones lo tengo conseguido, el problema que tengo es que la cadena de caracteres que recibo en el Pic es de de 64 caracteres todos seguidos y sin separadores de comas ni nada por el estilo, algo parecido a esto:
Buffer_in = 0554500232012340112223000000233344334434445456786
El problema que tengo es que quiero separarlo en cadenas de caracteres de 5 en 5 caracteres para formar 12 datos de 5 caracteres y un dato de 4 caracteres. algo parecido a:

Dt_in_1=05545
Dt_in_2=00232
Dt_in_3=01234
etc..etc

Por el momento no se como se puede hacer esto en la programación de pinguino.
Esto mismo ya lo he realizado antes en compiladores como Proton sin ningun tipo de problemas mediante la instrucion:
Mid$(buffer_in,x*5+1),5) y algo parecido en el Visual Basic.
Ademas tengo especial interés en no añadir comas ni nada por el estilo para separar los datos, pues pretendo utilizar el mismo interfaz en Visual Basic que ya he utilizado antes con otras placas programadas con Proton y con Mikroelectronica, entre otras cosas porque así puedo hacer comparativas de velocidad de transferencia de datos con las diferentes plataformas.
Reply
21-01-2014, 03:16 AM,
#2
RE: Como separar una cadena de caracteres en varias cadenas
(07-01-2014, 08:01 PM)ELKARTOP Wrote: Buenas tardes a todos:
Acabo de empezar a trabajar con Pinguino y como es logico tengo un montón de dudas que poco a poco voy solucionando.
en este momento estoy tratando de comunicar un pinguino 32bit micro con el PC en modo CDC, y con visual Basic, hasta el momento el envió de datos en ambas direcciones lo tengo conseguido, el problema que tengo es que la cadena de caracteres que recibo en el Pic es de de 64 caracteres todos seguidos y sin separadores de comas ni nada por el estilo, algo parecido a esto:
Buffer_in = 0554500232012340112223000000233344334434445456786
El problema que tengo es que quiero separarlo en cadenas de caracteres de 5 en 5 caracteres para formar 12 datos de 5 caracteres y un dato de 4 caracteres. algo parecido a:

Dt_in_1=05545
Dt_in_2=00232
Dt_in_3=01234
etc..etc

Por el momento no se como se puede hacer esto en la programación de pinguino.
Esto mismo ya lo he realizado antes en compiladores como Proton sin ningun tipo de problemas mediante la instrucion:
Mid$(buffer_in,x*5+1),5) y algo parecido en el Visual Basic.
Ademas tengo especial interés en no añadir comas ni nada por el estilo para separar los datos, pues pretendo utilizar el mismo interfaz en Visual Basic que ya he utilizado antes con otras placas programadas con Proton y con Mikroelectronica, entre otras cosas porque así puedo hacer comparativas de velocidad de transferencia de datos con las diferentes plataformas.

Creo que se podría tratar con arreglos de caracters, algo asi como:


char Buffer_in[] = "0554500232012340112223000000233344334434445456786";
char Dt_in_1[6];
char Dt_in_2[6];
char Dt_in_3[6];
int i;
for (i=0;i<5;i++) { Dt_in_1[i] = Buffer_in[i]; }
for (i=5;i<10;i++) { Dt_in_2[i] = Buffer_in[i]; }
for (i=10;i<15;i++) { Dt_in_3[i] = Buffer_in[i]; }

Hay que dimensionar los arreglos en 6, con un caracter mas para que contenga el \0 final.
Existen funciones para manejo de cadenas, ver el archivo:
pinguino/p8/sdcc/include/string.h
donde todas las funciones tienen argumentos punteros a char (o arreglos de char).

Saludos,
Mario
Reply
21-01-2014, 02:49 PM,
#3
RE: Como separar una cadena de caracteres en varias cadenas
Hola,
You can use strncpy() : http://www.techonthenet.com/c_language/s...trncpy.php
Remember : no needs to #include <string.h> with Pinguino
Hasta pronto,
Régis
It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)