Foros del Web » Programación para mayores de 30 ;) » .NET »

Como manipulo una cadena de caracteres en esta situacion????

Estas en el tema de Como manipulo una cadena de caracteres en esta situacion???? en el foro de .NET en Foros del Web. Gente necesito auxilio !!! Resulta que obtengo una cadena de caracteres, desde un aparato, conectado a mi puerto com,y la meto en una variable string. ...
  #1 (permalink)  
Antiguo 11/09/2006, 08:24
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 19 años, 8 meses
Puntos: 0
Como manipulo una cadena de caracteres en esta situacion????

Gente necesito auxilio !!!

Resulta que obtengo una cadena de caracteres, desde un aparato, conectado a mi puerto com,y la meto en una variable string.

luego, intento leer los datos de la cadena en una base de datos acces.
El tema esta, en que la cadena que yo quiero evaluar debe tener 79 caracteres, en esos caracteres, desde la posicion 0 hasta el final, yo voy recorriendo y tomando datos, segun la aparicion de espacios en blanco.

Mi problema es que el aparato, me envia las cadenas, muy irregularmente osea me manda aveces una cadena de 240 o mas caracteres, ( osea, varias de las cadenas de 79 en una sola ) o bien, me envia otras veces, cadenas de 40 caracteres, osea casi la mitad de los datos contenidos en la de 79.

entonces como puedo hacer, para unificar la cadena y poder sacar los datos?
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #2 (permalink)  
Antiguo 11/09/2006, 14:59
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 18 años, 6 meses
Puntos: 0
La verdad que no se entendí bien la explicación.
Si lo que pasa es que los datos pueden variar de longitud pero siempre están separados por un espacio podés usar la función split, por ejemplo:

Dim datos() as String
datos = split(cadenadecaracteres, " ")
  #3 (permalink)  
Antiguo 11/09/2006, 17:39
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 19 años, 8 meses
Puntos: 0
Gracias por tu ayuda...
mira te explico mas graficamente...

yo necesito hacer lo siguiente

cadena:

1111 22222 33333 44444 55555
variable1= 1111
variable2=2222
etc...

pero que pasa cuando la cadena viene asi...

3333 44444 55555 11111 2222 3333 44444 555
555 1111
2222 3333 44444
5555 1111 22222 33333 4444

.............
Claro que los valores de la cadena no son tan ovios... eso de que sean numeros constantes es solo para el ejemplo.

Queda mas claro ?
El asunto es .. como identifico, sin ver la cadena, las multiples cadenas internas, desde su inicio, hasta su fin... por mas que vengan desparejas, o truncas...
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #4 (permalink)  
Antiguo 11/09/2006, 20:44
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 18 años, 6 meses
Puntos: 0
Si en la cadena no hay una palabra o número que identifique que empieza o termina una subcadena, lo veo difícil.
Para poder identificar cuándo termina una subcadena y empieza otra es necesario tener algún caracter o algo que distinga esa división.
  #5 (permalink)  
Antiguo 11/09/2006, 21:46
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 19 años, 1 mes
Puntos: 0
me parece q solo es cuestion de trabajar con una especie de buffers para ir almacenando los datos faltantes.
  #6 (permalink)  
Antiguo 12/09/2006, 05:05
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 19 años, 8 meses
Puntos: 0
Foo
creo que le pegaste en el clavo

Lo que hice fue reducir el bufer de flujo de entrada del puerto com, y entonces, la cadena que entra es mas chica ahora...

Luego, voy almacenando los datos hasta en una string hasta que llega a tener un length de 79 que es lo que necesito

Hay un cracter que es constante que es una S.. pero siempre viene en distintas posiciones...

Ahora el tema es que todo viene en una sola linea, pero la cadena sigue viniendo trunca
y si empiezo a almacena en el string desde la s en adelante, pierdo la mitad de la cadena anteiror cuando inicia la escucha del puerto ( suponiendo que la primera escucha sea de la mitad de una cadena digamos...)
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #7 (permalink)  
Antiguo 12/09/2006, 13:41
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 19 años, 1 mes
Puntos: 0
lo que te decia era crear ese buffer en la parte que lees los datos.

void CapturarEntrada()
{
String entrada = "";
String buffer = "";

while (true)
{
entrada = LeerEntrada()

for(int i = 0; i < entrada.Length; i++)
{
if (buffer.length == tamañodelbuffer || entrada[i] == "S")
{
// hacer una llamada asincrona o delegar la tarea a una "hebra"
// con el parametro buffer

buffer = "";
}
buffer = buffer + entrada[i];
}
}
}
  #8 (permalink)  
Antiguo 12/09/2006, 15:47
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 19 años, 8 meses
Puntos: 0
si, eso es una solucion, el unico problema es que no puedo usar unn for, por que los datos, vienen con un evento que se produce cuando hay una entrada en puerto com... y codificando ese evento, es donde yo tomo lo que viene por el puerto
pero con esto que me decis, voy a probar de hacer la pregunta, sin el for... o sea simplemente un if
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
  #9 (permalink)  
Antiguo 12/09/2006, 15:52
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 19 años, 1 mes
Puntos: 0
igual no veo el problema, el codigo que puse era algo referencial nada mas

porque no pones un poco de codigo?
  #10 (permalink)  
Antiguo 13/09/2006, 09:10
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 19 años, 8 meses
Puntos: 0
Gracias Foo

Lo que me digiste, me ayudo... hice algo similar tomando como ciclo del bucle, la llamada al evento.

No pongo el codigo, por que tiene muchos objetos que cree yo mismo...
y tienen metodos propios... asi que te meteria mas en problemas...

Te agadezco mucho... mi codigo ya funciona bien
Gracis !!! a Todos
__________________
Facil ! Lo unico que hay que hacer para no ser animal, es razonar !
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:26.