|
571
|
Programación / .NET (C#, VB.NET, ASP) / cifrar tramas de bytes
|
en: 20 Mayo 2009, 21:02 pm
|
Buenas: He hecho un programa con Visual C# Express 2008. Puedo enviar tramas desde Internet. Cliente: Introduces un buuton1 y un textBox1. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; namespace Client { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { UdpClient udpClient = new UdpClient (); udpClient.Connect(textBox1.Text, 60000); Byte[] sendBytes = Encoding.ASCII.GetBytes("Hola a todo el mundo..."); udpClient.Send(sendBytes, sendBytes.Length); } } }
Server: Introduces un listBox1. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.Net.Sockets; using System.Net; namespace Server { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void serverThread() { UdpClient udpClient = new UdpClient (60000); while(true) { IPEndPoint RemoteIpEndPoint = new IPEndPoint (IPAddress .Any, 0); Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); string returnData = Encoding.ASCII.GetString(receiveBytes); listBox1.Items.Add(RemoteIpEndPoint.Address.ToString() + ":" + returnData.ToString()); } } private void Form1_Load(object sender, EventArgs e) { Thread thdUDPServer = new Thread (new ThreadStart(serverThread)); thdUDPServer.Start(); } } }
Mi idea es que necesito encriptrar estas tramas que se envía a través de Internet para que los sniffer (husmeadores) no cojan libremente los datos enviados. Los datos puedes ser textos de un chat. He encontrado algo aquí, pero no entiendo nada. http://msdn.microsoft.com/es-es/library/system.security.cryptography.des.aspxprivate static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV) { //Create the file streams to handle the input and output files. FileStream fin = new FileStream (inName, FileMode .Open, FileAccess .Read); FileStream fout = new FileStream (outName, FileMode .OpenOrCreate, FileAccess .Write); fout.SetLength(0); //Create variables to help with read and write. byte[] bin = new byte[100]; //This is intermediate storage for the encryption. long rdlen = 0; //This is the total number of bytes written. long totlen = fin.Length; //This is the total length of the input file. int len; //This is the number of bytes to be written at a time. DES des = new DESCryptoServiceProvider (); CryptoStream encStream = new CryptoStream (fout, des .CreateEncryptor(desKey, desIV ), CryptoStreamMode .Write); Console.WriteLine("Encrypting..."); //Read from the input file, then encrypt and write to the output file. while(rdlen < totlen) { len = fin.Read(bin, 0, 100); encStream.Write(bin, 0, len); rdlen = rdlen + len; Console.WriteLine("{0} bytes processed", rdlen); } encStream.Close(); fout.Close(); fin.Close(); }
http://msdn.microsoft.com/es-es/library/system.security.cryptography.aspx
|
|
|
573
|
Programación / .NET (C#, VB.NET, ASP) / Interfaz saltos de líneas para PIC
|
en: 3 Mayo 2009, 18:50 pm
|
Buenas a todos y todas: Tengo la idea que tengo medio hecho y está en experimentación de hacer un programa para poder generar los códigos necesarios rápidamente. Quizás sea una tontería y pérdida de tiempo, al menos sólo para un PIC. Lo haré con el PIC16F84A, más adelante lo haré para 16F876A/877A/886/887/88/628A y también en ASM para los 18F2550/4550 (también se puede para C). Generaría la tabla de la verdad al menos que estoy haciendo es del 3 últimos bit, ya haré de 16 combinaciones. Se generaría un archivo.asm o txt como se muestra abajo. ; ZONA DE DATOS **********************************************************************
LIST P=16F84A INCLUDE <P16F84A.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0. Inicio clrf PORTB ; Debe estar a cero cuando el puerto se configure como salida. bsf STATUS,RP0 ; Acceso al Banco 1. clrf TRISB ; Las líneas del Puerto B se configuran como salida. movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como entrada. movwf TRISA bcf STATUS,RP0 ; Acceso al Banco 0. Principal movf PORTA,W ; Lee los sensores. andlw b'00000111' ; Máscara para quedarse con el valor de los sensores. addwf PCL,F ; Salta a la configuración adecuada. goto Configuracion0 goto Configuracion1 goto Configuracion2 goto Configuracion3 goto Configuracion4 goto Configuracion5 goto Configuracion6 goto Configuracion7 Configuracion0 movlw b'01100001' ; Estado "Vacio" (configuración 0). goto ActivaSalida Configuracion1 movlw b'01100010' ; Estado "Llenándose" (configuración 1). goto ActivaSalida Configuracion2 movlw b'00010000' ; Estado "Alarma" (configuración 2). goto ActivaSalida Configuracion3 movlw b'00100100' ; Estado "Lleno" (configuración 3). goto ActivaSalida Configuracion4 movlw b'00010000' ; Estado "Alarma" (configuración 4). goto ActivaSalida Configuracion5 movlw b'00010000' ; Estado "Alarma" (configuración 5). goto ActivaSalida Configuracion6 movlw b'00010000' ; Estado "Alarma" (configuración 6). goto ActivaSalida Configuracion7 movlw b'00001000' ; Estado "Rebose" (configuración 7). ActivaSalida movwf PORTB ; Visualiza por el puerto de salida. goto Principal
END
El programa aún no es funcional del todo, estoy con pruebas y diseño de la Interfaz primero, para luego programarlo al final. Abajo se puede descargar el programa hecho, pero aún no es funcional, sólo cositas de diseño. Saludo.
|
|
|
574
|
Informática / Electrónica / Pasar de 16F84A a 16F627
|
en: 10 Abril 2009, 12:14 pm
|
Hola: Me gustaría pasar del PIC 16F84A al 16F627 (no 16F628A porque no lo tienen en el local). ¿Qué configuraciones debo usar para que me funcione el mismo circuito y con oscilador interno? ; Repetición del ejercicio Indexado_02.asm sobre la forma de implementar una tabla de ; verdad, pero resuelto con más eficacia. ; ; ZONA DE DATOS ********************************************************************** LIST P=16F84A INCLUDE <P16F84A.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; ZONA DE CÓDIGOS ******************************************************************** ORG 0 ; El programa comienza en la dirección 0. Inicio bsf STATUS,RP0 ; Acceso al Banco 1. clrf TRISB ; Las líneas del Puerto B se configuran como salida. movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como entrada. movwf TRISA bcf STATUS,RP0 ; Acceso al Banco 0. Principal bcf STATUS,C ; Lee los sensores y los multiplica por 2 rlf PORTA,W ; añadiendo un "0" y desplazando hacia la izquierda. andlw b'00001111' ; Se queda con los cuatro bits más bajos addwf PCL,F ; Salta a la configuración adecuada. movlw b'01100001' ; Estado "Vacio" (configuración 0). goto ActivaSalida movlw b'01100010' ; Estado "Llenándose" (configuración 1). goto ActivaSalida movlw b'00010000' ; Estado "Alarma" (configuración 2). goto ActivaSalida movlw b'00100100' ; Estado "Lleno" (configuración 3). goto ActivaSalida movlw b'00010000' ; Estado "Alarma" (configuración 4). goto ActivaSalida movlw b'00010000' ; Estado "Alarma" (configuración 5). goto ActivaSalida movlw b'00010000' ; Estado "Alarma" (configuración 6). goto ActivaSalida movlw b'00001000' ; Estado "Rebose" (configuración 7). ActivaSalida movwf PORTB ; Visualiza por el puerto de salida. goto Principal END
Un cordial saludo.
|
|
|
575
|
Programación / .NET (C#, VB.NET, ASP) / Cliente -Servidor.
|
en: 22 Marzo 2009, 09:12 am
|
Hola: Tengo hecho algo de Cliente-Servidor muy básico. Me gustaría saber que si el PC1 se conecta al PC2, envía al PC1 un mensaje que advierta si su conexión ha sido un éxito y que se mantenga en línea como el messenger. Cuando PC1 cierra la conexión mediante un buttón o botón, el PC2 muestra un mensaje indicando su conexión. NOTA: Los botones de Control,por ahora no hablamos de ellos y aún no es funcional. DESCARGAR PC1-Cliente:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; namespace PC1_Cliente { public partial class Form_principal : Form { public Form_principal() { InitializeComponent(); } private void button_Conectar_Click(object sender, EventArgs e) { UdpClient udpClient = new UdpClient(); udpClient.Connect(textBox1.Text, 8888); Byte[] sendBytes = Encoding.ASCII.GetBytes(textBox2.Text); udpClient.Send(sendBytes, sendBytes.Length); } } }
PC2-Servidor:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.IO.Ports; using System.Net; using System.Net.Sockets; using System.Threading; namespace PC2_Servidor { public partial class Form1 : Form { public Form1() { InitializeComponent(); if (!serialPort1.IsOpen) { try { serialPort1.Open(); } catch (System.Exception ex) { MessageBox.Show(ex.ToString()); } } } public void serverThread() { UdpClient udpClient = new UdpClient(8888); while(true) { IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); string returnData = Encoding.ASCII.GetString(receiveBytes); lbConnections.Items.Add(RemoteIpEndPoint.Address.ToString() + ":" + returnData.ToString() ); } } private void Form1_Load(object sender, EventArgs e) { Thread thdUDPServer = new Thread(new ThreadStart(serverThread)); thdUDPServer.Start(); } } }
Un cordial saludo.
|
|
|
576
|
Programación / .NET (C#, VB.NET, ASP) / Controlar PC desde otro PC
|
en: 17 Marzo 2009, 22:38 pm
|
Hola: Tengo la idea de hacer dos programas en cada PC controlado mediante Internet y puerto serie. 1- EL PC1 hago la Interfaz de control para controlar por vía Internet mediante button (botones) el otro programa del PC que ahí está el PIC16F84A. 2- El PC2 tiene otro programa o Interfaz que puede controlar el puerto serie donde está conectado el PIC. Se controla como puedes ver en este vídeo... http://www.youtube.com/watch?v=niWAbQ-HVnY...con la diferencia que yo lo quiero hacer mediante control por IP y que ustedes sean capaces de controlarlo desde sus casas mientras ves como se mueve una webcam por poner un ejemplo. Ahora la pregunta. ¿Con Visual C# se puede hacer esto? Aquí hay un ejemplo directo de una Interfaz básico con su código fuente, conectado al puerto serie. En realidad esta Interfaz no tiene que ir con el puerto serie, sólo la conexión a Internet mediante una IP que debemos conocer para poder llegar al PC2 que si se puede conectar al puerto serie. Las órdenes a enviar al PC2 para el puerto serie es algo parecido a esto. byte[] mBuffer = new byte[1]; mBuffer[0] = 0x20; //ASCII letra "Espacio". serialPort1.Write(mBuffer, 0, mBuffer.Length);
Necesito información y cómo se programa. Poco a poco lo intentaré, al menos como se envía esta trama de bytes en hex para que lo entienda el PC2 desde el PC1. De momento sigo buscando en www.google.com¿Sugerencias? Un cordial saludo.
|
|
|
577
|
Informática / Electrónica / Manejos de pulsadores con PIC
|
en: 16 Marzo 2009, 18:29 pm
|
Hola:
Con un PIC16F84A-04 en ASM, quiero lograr programar un botón que haga cosas diferentes dependiendo de cómo lo pulses.
Puedes elegir para tu ejemplo los puertos In/Out que desees, las salidas es sólo hay 3 diodos Led. Led_Verde, Led Ambar y otro Led_Rojo.
1º) Si el pulsador (P en adelante) no se está pulsando, ningún Led se enciende, en cambio de que se pulse se enciende el Led Rojo.
2º) Si dejas pulsado el P durante 3 segundos, se apaga el Led Rojo y acto seguido se enciende Led Verde, al final cuando dejes de pulsar el P, se quedará encendido el Led Verde.
3º) Si dejas pulsado el P durante 10 segundos, se apagan todos los Led, acto seguido parpadea el Led Ambar. 200ms y 200ms, ese el el tiempo de parpadeo del Led Ambar y se queda ahí.
4º) Después del punto 3º), en la EEPROM se almacena un valor que identifique si se pierde la energía, pila o batería al iniciar el PIC de nuevo, siga el Led Ambar parpadeando.
Un cordial saludo.
|
|
|
578
|
Programación / .NET (C#, VB.NET, ASP) / Manejar ComboBox
|
en: 15 Marzo 2009, 16:04 pm
|
Hola:
En un Form1, incluí el serialPort1 y un comboBox1. El serialPort1 tiene el serialPort1.PortName = "COM1"; , es decir, que tiene el puerto COM1 predeterminado.
En el comboBox, puse en Items dos valores llamadas COM1 y COM2. Al ejecutar el programa aparece el comboBox aparece en blanco así que debo seleccionar uno de los dos que aparece, el COM1 o el COM2.
1) ¿Cómo hago que al ejecutar la aplicación ya se ve el comboBox con el COM1 seleccionado y no en blanco?
Otra cosa que quiero hacer es, que en el comboBox, sea capaz de cambiar de COM1 a COM2 el componente serialPort1 para seleccionar el puerto 1 o 2 que desee.
2) ¿Cuál es el código necesario?
Un cordial saludo.
|
|
|
579
|
Informática / Electrónica / Comandos AT para Nokia N70
|
en: 14 Marzo 2009, 18:22 pm
|
Hola: Tengo un Nokión N70 para su época, el cable es de USB. Me gustaría saber si hay alguna manera de manejar el Movil con Comandos AT y probar. Los de antes funcionan con el puerto serie y el HyperTerminal de Windows, ahora no tengo idea. Si saben algo de información sobre esto mediante USB o con un microcontrolador, mejor que mejor. En www.google.com hay proyectos pero no enseñan mucho como se hace. Un cordial saludo.
|
|
|
|
|
|
|