Título: Enviar más de 255 carácteres Publicado por: Meta en 10 Diciembre 2020, 01:01 am Buenos días camaradas:
Hice un micni chat que funciona bien entre dos PC o ordenadores de sobremesa por el puerto serie. Cuando quiero escribir un mensaje de más de 255 letras o caracteres, no me deja. Solo me quedo con 255 y ya está. ¿Existe alguna manera de escribir mensaje en la consola más de 255 caracteres o los que quiera? Dejo el código de ejemplo en C#. Código
Otra cosa que me he sado cuenta. Si escribo o envío un mensaje que use la ñ, por ejemplo: Hola Señor. Me aparece esto. Hola Se?or. Siempre se me mete el ? por medio. Detecta mal los caracteres al recibir datos. Al introducirlos no. (https://www.subeimagenes.com/img/captura-2189233.PNG) Gracias. Título: Re: Enviar más de 255 carácteres Publicado por: Danielㅤ en 11 Diciembre 2020, 00:24 am Hola, si creo que es posible, pero debés aumentar ese valor desde la propia CMD, desde el código no se puede hacer nada, pero puede que desde la consola si.
Saludos Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 11 Diciembre 2020, 00:27 am Gracias Señor.
He podido al final leer los puertos series físicos y virtuales. Dejo el código nuevo abajo. 1. ¿Cuál es la mejor opción del formato hasta para escribir la ñ, tildes sin que aparezca caracter raro a la hora de enviar texto en forma de chat? 2. ¿Cómo se hace encode UTF 8 a la hora de enviar y recibir datos por el puerto serie? 3. A la hora de escribir mensajes, solo puedo escribir un máximo de 255 caracteres. ¿Cómo se puede escribir en la consola, más caracteres sin estar limitado solo a 255? Código C#: Código
Saludos. Título: Re: Enviar más de 255 carácteres Publicado por: Danielㅤ en 11 Diciembre 2020, 00:42 am Lo de la letra ñ y acentos es problema de codificación y eso lo debes programar desde tu código para que acepte los acentos, debes usar la codificación UTF-8.
Otra forma posible de solucionar lo de los acentos, es copiar la salida de ellos desde la consola y pegarlo en tu código y luego hacer un replace, aunque yo solía hacer eso en mis códigos y funcionaban bien, pero es un poco complicado hacerlo si no se sabe como, pero yo lo hacía con un replace, de todas maneras lo mejor es cambiar la codificación en el código. Saludos Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 11 Diciembre 2020, 01:08 am Parece ser que el UTF-8 le gusta más la gente al usarlo.
¿Cómo se maneja el UTF-8? Título: Re: Enviar más de 255 carácteres Publicado por: Danielㅤ en 11 Diciembre 2020, 01:29 am No, no es que les guste más, sino que ese tipo de codificación acepta más caracteres.
Saludos Título: Re: Enviar más de 255 carácteres Publicado por: EdePC en 11 Diciembre 2020, 02:44 am Tengo entendido de que C# trabaja directamente con UTF-16 (UniCode), supongo que bastaría con poner la consola para que muestre en esa codificación también:
Código
- De ser necesario también el: Código
Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 12 Diciembre 2020, 01:02 am Por lo que he estado mirando en Internet, y como también quiero recibir y enviar mensajes a dispositivos, se recomienda que sea la lectura y escritura de mensajes con Byte[].
Por ejemplo: Código
Por pasos qu eno se como hacerlo. 1. Escribo en la consola un mensaje. Será esto: Código
2. Cuando ya se almacena en la variable "variable" un texto, por ejemplo. Hola, mi muy distinguido amigo. Me imagino que así se envía el texto. Código
Cuando llegue a mi casa, hago pruebas y comento. Saludos. Título: Re: Enviar más de 255 carácteres Publicado por: Serapis en 14 Diciembre 2020, 01:58 am En efecto, para manejar más de 255 caracteres, debes prescindir de los 'ReadLINE y WriteLINE, que como su nombre sugiere refieren a una sola línea.
Puedes crear arrays donde cada ítem del array fuere una línea. Usar directamente un array de bytes es igualmente válido, cuando se escribe al detectar los caracteres de salto de línea, los interpreta y sigue escribiendo... Nota que algo WriteLine y ReadLine, suelen usarse para la interacción con el usuario, normalmente si se le pide algo al usuario suele bastar una línea (o en varias writeLine-s), pero la respuesta dle usuario suele limitarse a una sola línea, luego ReadLine es más que suficiente al caso. Ahora la cuestión es... porqué perder tiempo con la consola para intentar sortear los límites prácticos de la consola cuando hay controles para hacer interfaces de usuario sin las limitaciones de la consola????????. Un chat acaso no será más cómodo en una ventana (form) con alguna caja de texto multilínea... pero en fin, cada uno pierde el tiempo como quiere. Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 19 Diciembre 2020, 12:04 pm El array creado es este po rponer un ejemplo.
Códigos C#: Código
En fin, todavía no se como se hace lo de enviar más de 255 carácteres. ¿Hay ejemplos? Ahora la cuestión es... porqué perder tiempo con la consola para intentar sortear los límites prácticos de la consola cuando hay controles para hacer interfaces de usuario sin las limitaciones de la consola????????. Un chat acaso no será más cómodo en una ventana (form) con alguna caja de texto multilínea... pero en fin, cada uno pierde el tiempo como quiere. Por curiosidad, después haré el que tu dices con Windows Form y WPF. ;) Cuestiones didácticas no hay problemas, ;) Título: Re: Enviar más de 255 carácteres Publicado por: Danielㅤ en 19 Diciembre 2020, 13:58 pm Hola, lo mejor que podes hacer es lo siguiente:
Desde tu código compruebas si la cadena tiene más de 255 (mensaje.Length), en el caso que tenga más de esa cantidad, vas a dividir el mensaje en varios mensajes y con un bucle vas a ir enviando los textos/frases divididos por cada uno con 255 caracteres o menos. Pero tenés que usar por ejemplo: mensaje.Split(' '); Es decir dividir la cadena por espacios para que los textos no salgan cortados. Por ejemplo si el texto a enviar contiene mil caracteres, lo dividis en 4 y a esos mensajes los envías uno después de otro, de esa manera podrás enviar todo lo que quieras y sin que se te corte el texto ni te afecte el buffer de la consola. Saludos Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 19 Diciembre 2020, 15:20 pm Esa forma de hacer las cosas suena trapiche e innecesario. Es verdad que si no hay otra cosa es una artimaña perfecta, porque existe la posibilidad de hacerlo.
El rollo es saber como almacenar el texto en la consola en un array que se pasa de los 255 caracteres. Título: Re: Enviar más de 255 carácteres Publicado por: Danielㅤ en 19 Diciembre 2020, 15:50 pm Es que todos los buffers tienen un límite, otros más que otros, lo tuyo por ejemplo sería como un chat IRC en donde se envían mensajes cortos.
Tenés que almacenarlo justamente en un array, y cada posición del array es una parte de la cadena entera, por ejemplo si el texto contiene mil caracteres: mensaje[0] mensaje[1] mensaje[2] mensaje[3] estaría dividido por 4 partes, cuando el array "mensaje" contiene toda la cadena entera. Por cierto innecesario no es, al contrario, esa es la forma o al menos una forma, así funcionan los chats IRC con un límite de texto a enviar y recibir, por eso es un chat de mensajes cortos. Saludos Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 19 Diciembre 2020, 15:57 pm Voy a intentar hacer un ejmeplo de almacenar la cantidad de datos en Byte[] (https://docs.microsoft.com/es-es/dotnet/api/system.byte?view=net-5.0). Deja ver si me sale y mostrarlo en pantalla.
Título: Re: Enviar más de 255 carácteres Publicado por: Meta en 20 Diciembre 2020, 09:08 am Buenas gente por Naviades:
He intentado pero no me gusta mucho. Código
Seguro que se puede hacer mejor. Saludos. |