Windows 10 me ocurre cosas raras, me aparece e outlook del email ese, todo el rato ejecutándose una y otra vez. No me deja ni ver ni ver, ni escribir por aquí, debo borrar todo el rato el proceso porque si no, se me acaba agotando la RAM y Windows se vuelve muy lento.
Al intentar reiniciar el P o apagarlo me dice este mensaje.
Otra persona está todavía usando este equipo. Si lo apagas ahora, esa persona podría perder el trabajo que no haya guardado.
Ni con antivirus ni nada.
¿Alguna idea?
Al menos quiero saber el proceso que me ejecuta el outlook.
En mi caso desde WhatsApp, también puede ser Telegram, enviar mensajes como comandos, lo lea el PC y activo Led porque tiene incorporado Arduino. Lo que si puedo hacer es enviar comandos desde gmail y hotmail en modo consola y Windows Form con C#.
En realidad es un binario mezclado con caracteres tipo string del principio. Por muy encoder que use el ponerlo en un Windows Form siempre me suelta 63 en decimal.
Código
foreach(uint b in Encoding.Default.GetBytes(salida[8]))
{
//richTextBox1.Text += b.ToString();
richTextBox1.Text+= Environment.NewLine;// Nueva línea.
richTextBox1.Text+= $"Array: {numeros[j] = b}";
++j;
}
Ya que al capturar datos en el puerto serie lo almaceno tipo String.
Parece ser que es mejor optar por almacenar los datos o tramas de bytes que llegan desde el puerto serie en tipo byte[] y usar read.
Si te fijas bien en el primer delimitador a partir de la S son bits, la trama comparte entre string y nivel a bits, es decir, usa distinto tipos de datos.
La S muestra esto. S€„€ˆ„\r
Siempre estas cadenas empieza con # y acaba con \r. No se si hace falta usar StartsWith y EndsWith.
Tabla ASCII.
Fijándose en la tabla ASCII la S rn decimal es 83. A partir de ahí en la cadena entrada2 tiene 144 132 128 136 132 192 y el final que es retorno de carro es el 13 en decimal.
Ya que se lee bien los string de esta linea I225.7O226.2L006B100V25.7F50.2H50.2R0080S y después de la S me da disparates como esto: S€„€ˆ„\r, mejor pasarlo a decimal que es esto otro 144 132 128 136 132 192.
El resultado si ejecuto el código completo es este:
La idea es que muestre bien los datos completo al recibirlos, no en en tipo string y entre medio bit, es decir, datos de distintos tipos.
Parece ser que debo capturar o coger estos datos: I225.7O226.2L006B100V25.7F50.2H50.2R0080
Quiero enviar dos comandos. Este es B<cr>. La letra B mayúscula y el retorno de carro. También quiero enviar otro comando por el puerto serie que es este, X72<cr>.
Una vez enviado el comando, su respuesta es trama de Bytes como este:
Quiero lograr de alguna forma posible cuando se me presenta el tiempo en horas y minutos en hacer las cosas bien desde el principio. Por ejemplo, introduzco el valor 80 en la consola. Que en realidad son 80 minutos y equivale a una hora y 20 minutos.
Si aparece 2 minutos, que lo diga en plural, y si es un minuto que lo siga en singular, lo mismo para las horas, si dice 7 horas, que sea horassssss, con la s, y si es una hora, que ponga sin la s, es decir, hora, en singular.
Si introduzco 80, me tiene que responder: > 1 hora y 20 minutos.
Introduzco: 1 > 0 Horas y 1 minuto. Aquí solo debe aparecer esto: > 1 minuto, sin usar la palabra hora porque ya es cero horas.
Introduzco: 61 > 1 hora y 1 minuto. Como se puede ver, hora y minuto en singular.
Introduzco: 121 > 2 horas y 1 minuto. Si se fijan, la hora en horas con la s porque son más de una hora y un minuto sin s al final porque es solo un minuto.
¿Se entiende lo que quiero lograr?
Me he machacado mucho la cabeza y no me sale como quiero.
Uso el lenguaje C#. Código hecho hasta ahora gracias a los compañeros de este foro.
Código
usingSystem;
namespace Minutos_Horas_Consola_04
{
internalclass Program
{
staticvoid Main(string[] args)
{
while(true)
{
int totalMinutos;
Console.Write("Ingresa el valor de minutos: ");
totalMinutos =int.Parse(Console.ReadLine());
// ¿Es igual a 1 minuto?
if((totalMinutos %60)==1)
{
Console.WriteLine("> "+ totalMinutos /60+" hora y "+ totalMinutos %60+" minuto.\n");
Console.WriteLine("Estoy en el IF 1.");
Console.WriteLine("-------------------------");
}
// ¿Es mayor a 60 segundos o 1 minuto?
if((totalMinutos %60)>1)
{
Console.WriteLine("> "+ totalMinutos /60+" hora y "+ totalMinutos %60+" minutos.\n");
Console.WriteLine("Estoy en el IF 2.");
Console.WriteLine("-------------------------");
}
// ¿Es igual a 60 segundos o 1 minuto?
if((totalMinutos %60)==0)
{
Console.WriteLine("> "+ totalMinutos /60+" hora y "+ totalMinutos %60+" minutos.\n");
Puedo recibir tramas de bytes por el puerto serie, una es esta si envía este comando:
Código:
serialPort1.Write("B\r");
#I230.3O230.0L007B100V25.7F50.2H50.2R0080S„€ˆ„À
y la otra es esta si envías este otro comando diferente:
Código:
serialPort1.Write("X72\r");
#2000,1400,230,45.0,55.0,8.6
En la primera tengo el código hecho en Windows Form y funciona.
Código:
using System; using System.IO.Ports; using System.Threading; using System.Windows.Forms;
namespace Termite_SAI_04 { public partial class Form1 : Form { private delegate void DelegadoAcceso(String accion); public Form1() { InitializeComponent(); }
// Convertir variable tipo string a tipo int, es decir, la variable tipo string "salida[7]" // se convierte en tipo int "resultadoSalida7". int resultadoSalida7 = Int32.Parse(salida[7]);
// ¿Es igual a 1 minuto? if ((resultadoSalida7 % 60) == 1) { label_R.Text = resultadoSalida7 / 60 + " hora y " + resultadoSalida7 % 60 + " minuto."; }
// ¿Es mayor a 60 segundos o 1 minuto? if ((resultadoSalida7 % 60) > 1) { label_R.Text = resultadoSalida7 / 60 + " hora y " + resultadoSalida7 % 60 + " minutos."; }
// ¿Es igual a 60 segundos o 1 minuto? if ((resultadoSalida7 % 60) == 0) { label_R.Text = resultadoSalida7 / 60 + " hora y " + resultadoSalida7 % 60 + " minutos."; } }
catch (IndexOutOfRangeException ex) { Console.Write("Índice fuera de los límites de la matriz."); MessageBox.Show(ex.Message); }
catch (FormatException ex) { Console.Write("La cadena de entrada no tiene el formato correcto."); MessageBox.Show(ex.Message, "Error"); } } } }
Aquí abajo es el trozo de códigos para leer esa trama que no se donde ponerlo.