elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Temas
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 66
181  Programación / Programación C/C++ / Instalar esta librería en C++ en: 16 Marzo 2017, 06:23 am
Hola:

Quiero usar e instalar esta librería para Visual C++, concretamente Visual Studio Community 2017.
https://github.com/Gmatarrubia/LibreriasTutoriales

Su código es este:
Código
  1. #include
  2. #include
  3. #include "SerialClass.h"
  4. using namespace std;
  5.  
  6. void main () {
  7.    Serial* Arduino = new Serial("COM7");
  8.  
  9.  
  10.    while( Arduino->IsConnected() ){
  11.        char palabra[] = "PalabraDelMundo";
  12.  
  13.        cout<<"Arduino conectado"<<endl;
  14.  
  15.        cout<<"Enviando :"<<palabra<<endl;
  16.        Arduino->WriteData(palabra,sizeof(palabra)-1);
  17.  
  18.        Sleep(500);
  19.  
  20.        Arduino->ReadData(palabra,sizeof(palabra)-1);
  21.        cout<<"Recibido: "<<palabra<<endl;
  22.  
  23.        cout<<"-------------------"<<endl;
  24.        Sleep(1000);
  25.    }

Creo un proyecto nuevo.




Me crea este código.


Añado las librerías com indica abajo.


Lo mismo para la hora y lo refleja, tanto en cpp como en h indicado abajo.


Como que no detecta la librería.


¿En que fallo?

Un cordial saludo.
182  Programación / Java / Pasar de C# a Java. Código en modo consola en: 16 Marzo 2017, 03:13 am
Hola:

Quiero pasar este código de C# a Java con NetBeans.



Instalar Java actualizado:
https://www.java.com/es/download/

Compilador NetBeans (En español), Java SE:
https://netbeans.org/downloads/index.html

Tutorial sobre instalación del NetBeans y las librerías RxTx para controlar el puerto serie de Arduino:
https://es.slideshare.net/Metaconta2/interfaz-java-y-arduino

Librería oficial RxTx solo para 32 bits:
http://rxtx.qbang.org/wiki/index.php/Download

Librería alternativa RxTx de 32 y de 64 bits. Usaremos 64 bits. (Recomendado):
http://jlog.org/rxtx-win.html

El código de C# es este aquí abajo.
Código
  1. using System;
  2. using System.Text;
  3. using System.IO.Ports;
  4. using System.IO;
  5. using System.Diagnostics;
  6. using System.Threading;
  7.  
  8. namespace Recibir_archivo_desde_Arduino_consola_06
  9. {
  10.    class Program
  11.    {
  12.        static int cantidadBytes;
  13.        static StringBuilder sb = new StringBuilder();
  14.  
  15.        static void Main(string[] args)
  16.        {
  17.            string COM = "";
  18.            // Título de la ventana.
  19.            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro";
  20.  
  21.            // Tamaño ventana consola.
  22.            Console.WindowWidth = 55; // X. Ancho.
  23.            Console.WindowHeight = 18; // Y. Alto.
  24.  
  25.  
  26.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  27.            SerialPort Puerto_serie = new SerialPort();
  28.  
  29.            // Configuración.
  30.            Console.Write(@"
  31. Introduzca un número para seleccionar puerto COM.
  32. Por ejemplo el 4, sería COM4.
  33.  
  34. Puerto: ");
  35.            COM = Console.ReadLine(); // Escribir el número del puerto.
  36.            Console.Clear();
  37.  
  38.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  39.  
  40.  
  41.            Puerto_serie.BaudRate = 115200; // Baudios. 115200.
  42.            Puerto_serie.Parity = Parity.None; // Paridad.
  43.            Puerto_serie.DataBits = 8; // Bits de datos.
  44.            Puerto_serie.StopBits = StopBits.One; // Bits de parada.
  45.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  46.  
  47.            // Establecer la lectura / escritura de los tiempos de espera.
  48.            Puerto_serie.ReadTimeout = -1; // 500.
  49.            Puerto_serie.WriteTimeout = -1; // 500.
  50.  
  51.            try
  52.            {
  53.                Puerto_serie.Open(); // Abrir el puerto serie.
  54.            }
  55.  
  56.            catch (IOException)
  57.            {
  58.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  59.                Console.CursorVisible = false;
  60.                Console.SetCursorPosition(16, 6);
  61.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  62.                o no lo encuentra.");
  63.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  64.            }
  65.  
  66.            catch (UnauthorizedAccessException e)
  67.            {
  68.                Console.WriteLine(e);
  69.            }
  70.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  71.  
  72.            Console.WriteLine("Esperando datos desde Arduino... \n");
  73.            Console.ReadKey();
  74.            Puerto_serie.Close(); // Cerrar puerto.
  75.        }
  76.  
  77.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  78.        {
  79.            try
  80.            {
  81.                SerialPort sp = (SerialPort)sender;
  82.                string indata = sp.ReadExisting();
  83.                string[] data = indata.Split('A');
  84.                cantidadBytes = int.Parse(data[0]);
  85.  
  86.  
  87.                switch (data[1].ToString())
  88.                {
  89.                    case "1":
  90.                        Console.WriteLine("Tamaño: " + cantidadBytes + " Bytes.");
  91.                        Console.WriteLine("Foto: " + data[1] + ". Tipo de archivo: JPG");
  92.                        break;
  93.  
  94.                    case "2":
  95.                        Console.WriteLine("Tamaño: " + cantidadBytes + " Bytes.");
  96.                        Console.WriteLine("Foto: " + data[1] + ". Tipo de archivo: PNG.");
  97.                        break;
  98.  
  99.                    default:
  100.                        Console.WriteLine("Cosas raras en 'data': " + data.ToString()); // Por si hal algún error.
  101.                        break;
  102.                }
  103.  
  104.                int contador = 0;
  105.                byte[] datosArray = new byte[cantidadBytes];
  106.  
  107.                switch (indata)
  108.                {
  109.                    case "17729A1":
  110.                        Thread.Sleep(100); // Retardo.
  111.                        byte[] miBuffer = Encoding.ASCII.GetBytes("OK1"); // Codificación ASCII.
  112.                        sp.Write(miBuffer, 0, miBuffer.Length); // Envía OK1 al puerto serie.
  113.                        break;
  114.  
  115.                    case "2065A2":
  116.                        Thread.Sleep(100); // Retardo.
  117.                        byte[] miBuffer2 = Encoding.ASCII.GetBytes("OK2"); // Codificación ASCII.
  118.                        sp.Write(miBuffer2, 0, miBuffer2.Length); // Envía OK2 al puerto serie.
  119.                        break;
  120.  
  121.                    default:
  122.                        Console.WriteLine("Cosas raras en 'indata': " + indata.ToString()); // Por si hal algún error.
  123.                        break;
  124.                }
  125.  
  126.                while (true)
  127.                {
  128.  
  129.                    contador += sp.Read(datosArray, contador, datosArray.Length - contador);
  130.  
  131.                    Console.SetCursorPosition(10, 6);
  132.                    Console.Write("Datos recibidos:  {0}", contador + " Bytes.");
  133.                    Console.WriteLine("                   ");
  134.  
  135.                    if ((contador == cantidadBytes) && (contador == 17729))
  136.                    {
  137.                        Mensaje1();
  138.                        File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
  139.                        Mensaje2();
  140.                        Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
  141.                        Mensaje3();
  142.                        break; // Garantiza que el ciclo termine.
  143.                    }
  144.  
  145.                    if ((contador == cantidadBytes) && (contador == 2065))
  146.                    {
  147.                        Mensaje1();
  148.                        File.WriteAllBytes("fotón.png", datosArray); // Crear archivo en el disco duro.
  149.                        Mensaje2();
  150.                        Process.Start("fotón.png"); // Ejecutar visualizador de imágenes.
  151.                        Mensaje3();
  152.                        break; // Garantiza que el ciclo termine.
  153.                    }
  154.                }
  155.  
  156.                void Mensaje1()
  157.                {
  158.                    Console.WriteLine();
  159.                    Console.WriteLine("Creando archivo al disco duro...");
  160.                }
  161.  
  162.                void Mensaje2()
  163.                {
  164.                    Console.WriteLine();
  165.                    Console.WriteLine("Archivo creado. Ejecutando imagen.");
  166.                }
  167.  
  168.                void Mensaje3()
  169.                {
  170.                    Console.WriteLine();
  171.                    Console.WriteLine("Imagen ejecutada.");
  172.                    Console.WriteLine();
  173.                    Console.WriteLine("Cabecera recibida: " + indata + "\n");
  174.                    Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  175.                    Console.WriteLine("FIN DE PROGRAMA.");
  176.                    Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
  177.                }
  178.            }
  179.  
  180.            catch (FormatException)
  181.            {
  182.                // System.FormatException: 'La cadena de entrada no tiene el formato correcto.'
  183.            }
  184.        }
  185.    }
  186. }
  187.  

En estos momentos estoy instalando la librería RxTx de 64 bits para Windwos 10 de 64 bits que es el que uso actualmente. El código de C# arriba fucniona de maravilla.

Esto de Java para adaptarme tardaré una eternidad, al menos se que el Hola mundo es Console.WriteLine("Hola mundo"); de C# es el equivalente a System.out.println("Hola mundo"); de Java.

Cualquier ayuda es bienvenida.
183  Programación / .NET (C#, VB.NET, ASP) / Cerrar y abrir la bandeja del lector con el botón manualmente, y que lo sepa C# en: 15 Marzo 2017, 11:11 am
Hola:

Quiero cerrar y abrir la bandeja del lector de DVD con el botón manualmente, y que lo sepa C#. Estoy usando Visual Studio Community 2017.

En otro momento hicimos desde C#, controlar la bandeja abrirla y cerrarla pulsando los botones como indica en la interfaz de abajo.



Código fuente sencillo de C#:
Código
  1. using System;
  2. using System.Runtime.InteropServices; // No olvidar.
  3. using System.Text;
  4. using System.Windows.Forms;
  5.  
  6. namespace Lector_discos_cs
  7. {
  8.    public partial class Form1 : Form
  9.    {
  10.        public Form1()
  11.        {
  12.            InitializeComponent();
  13.        }
  14.  
  15.        [DllImport("winmm.dll")]
  16.        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
  17.            int uReturnLength, IntPtr hwndCallback);
  18.  
  19.        StringBuilder rt = new StringBuilder(127);
  20.  
  21.        private void button_Abrir_Click(object sender, EventArgs e)
  22.        {
  23.            label_Mensaje.Text = "Abriendo...";
  24.            Application.DoEvents();
  25.            mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
  26.            label_Mensaje.Text = "Abierto";
  27.        }
  28.  
  29.        private void button_Cerrar_Click(object sender, EventArgs e)
  30.        {
  31.            label_Mensaje.Text = "Cerrando...";
  32.            Application.DoEvents();
  33.            mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero);
  34.            label_Mensaje.Text = "Cerrado";
  35.        }
  36.    }
  37. }

Hasta aquí todo bien.

Ahora quiero hacer, saber antes que nada, si es posible que al meter la bandeja con la mano o pulsar el botón físicamente del lector, C# puede saber su estado, cunado está abierto y cuando está cerrado.

En este caso, no hay botones para Windows Form de C#, solo un label que indica el estado "ABIERTO" y "CERRADO".

¿Es posible hacerlo?

Si es así. ¿Cómo se hace?

Lo único que pensé que este enlace valdría la pena o te daba información, pero es otra cosa.

Que tengan buena semana. ;)
184  Programación / Programación C/C++ / [Tutorial] Formulario Windows VC++ 2017 para iniciados en: 13 Marzo 2017, 23:05 pm


Tutorial para iniciados de modo introducción de los tres métodos para crear un formulario. Ya puedes configurar en algunas tecnologías el primer formulario con cualquiera de ellso eligiendeo CLR, MFC o Win32 en C++ con Visual Studio Community 2017.

Ver tutorial.

Un cordial saludos.

PD: También tutorial la versión Visual studio Community 2015.
185  Programación / Programación C/C++ / No encuentra la laibrería estandar en Visual C++ en: 13 Marzo 2017, 06:35 am
Hola:

Estoy usando el nuevo Visual C++ 2017 con Win32. He probado este ejemplo que puedes ver en este enlace.

https://msdn.microsoft.com/es-es/library/bb384843.aspx

El código de ejemplo que viene completo al final del documento, si funciona muy bien para Visual Stduio Community 2015, no da ningún problema. Este mismo código me da problemas con Visual Studuio Community 2017.

Código
  1. // GT_HelloWorldWin32.cpp
  2. // compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c
  3.  
  4. #include <windows.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <tchar.h>
  8.  
  9. // Global variables
  10.  
  11. // The main window class name.
  12. static TCHAR szWindowClass[] = _T("win32app");
  13.  
  14. // The string that appears in the application's title bar.
  15. static TCHAR szTitle[] = _T("Formulario");
  16.  
  17. HINSTANCE hInst;
  18.  
  19. // Forward declarations of functions included in this code module:
  20. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  21.  
  22. int WINAPI WinMain(HINSTANCE hInstance,
  23. HINSTANCE hPrevInstance,
  24. LPSTR lpCmdLine,
  25. int nCmdShow)
  26. {
  27. WNDCLASSEX wcex;
  28.  
  29. wcex.cbSize = sizeof(WNDCLASSEX);
  30. wcex.style = CS_HREDRAW | CS_VREDRAW;
  31. wcex.lpfnWndProc = WndProc;
  32. wcex.cbClsExtra = 0;
  33. wcex.cbWndExtra = 0;
  34. wcex.hInstance = hInstance;
  35. wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
  36. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  37. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  38. wcex.lpszMenuName = NULL;
  39. wcex.lpszClassName = szWindowClass;
  40. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
  41.  
  42. if (!RegisterClassEx(&wcex))
  43. {
  44. MessageBox(NULL,
  45. _T("Call to RegisterClassEx failed!"),
  46. _T("Win32 Guided Tour"),
  47. NULL);
  48.  
  49. return 1;
  50. }
  51.  
  52. hInst = hInstance; // Store instance handle in our global variable
  53.  
  54.   // The parameters to CreateWindow explained:
  55.   // szWindowClass: the name of the application
  56.   // szTitle: the text that appears in the title bar
  57.   // WS_OVERLAPPEDWINDOW: the type of window to create
  58.   // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)
  59.   // 500, 100: initial size (width, length)
  60.   // NULL: the parent of this window
  61.   // NULL: this application does not have a menu bar
  62.   // hInstance: the first parameter from WinMain
  63.   // NULL: not used in this application
  64. HWND hWnd = CreateWindow(
  65. szWindowClass,
  66. szTitle,
  67. WS_OVERLAPPEDWINDOW,
  68. CW_USEDEFAULT, CW_USEDEFAULT,
  69. 300, 300,
  70. NULL,
  71. NULL,
  72. hInstance,
  73. NULL
  74. );
  75.  
  76. if (!hWnd)
  77. {
  78. MessageBox(NULL,
  79. _T("Call to CreateWindow failed!"),
  80. _T("Win32 Guided Tour"),
  81. NULL);
  82.  
  83. return 1;
  84. }
  85.  
  86. // The parameters to ShowWindow explained:
  87. // hWnd: the value returned from CreateWindow
  88. // nCmdShow: the fourth parameter from WinMain
  89. ShowWindow(hWnd,
  90. nCmdShow);
  91. UpdateWindow(hWnd);
  92.  
  93. // Main message loop:
  94. MSG msg;
  95. while (GetMessage(&msg, NULL, 0, 0))
  96. {
  97. TranslateMessage(&msg);
  98. DispatchMessage(&msg);
  99. }
  100.  
  101. return (int)msg.wParam;
  102. }
  103.  
  104. //
  105. //  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
  106. //
  107. //  PURPOSE:  Processes messages for the main window.
  108. //
  109. //  WM_PAINT    - Paint the main window
  110. //  WM_DESTROY  - post a quit message and return
  111. //
  112. //
  113. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  114. {
  115. PAINTSTRUCT ps;
  116. HDC hdc;
  117. TCHAR greeting[] = _T("Visual C++ 2017 Win32");
  118.  
  119. switch (message)
  120. {
  121. case WM_PAINT:
  122. hdc = BeginPaint(hWnd, &ps);
  123.  
  124. // Here your application is laid out.
  125. // For this introduction, we just print out "Hello, World!"
  126. // in the top left corner.
  127. TextOut(hdc,
  128. 55, 105,
  129. greeting, _tcslen(greeting));
  130. // End application-specific layout section.
  131.  
  132. EndPaint(hWnd, &ps);
  133. break;
  134. case WM_DESTROY:
  135. PostQuitMessage(0);
  136. break;
  137. default:
  138. return DefWindowProc(hWnd, message, wParam, lParam);
  139. break;
  140. }
  141.  
  142. return 0;
  143. }

El error que me da es este:

Gravedad    Código    Descripción    Proyecto    Archivo    Línea    Estado suprimido
Error    C1010    final de archivo inesperado al buscar la directiva de encabezado precompilado. Compruebe si olvidó agregar '#include "stdafx.h"' al código fuente?    Proyecto_Win32    c:\users\usuario\documents\visual studio 2017\projects\proyecto_win32\proyecto_win32\mensaje_texto.cpp    145   


Si pongo arriba dicho #include "stdafx.h" me marca como error, como que no lo encuentra.

¿Alguna idea?

Saludos.
186  Programación / .NET (C#, VB.NET, ASP) / Instalar las herramientas comunes del VC++ 2017 en: 13 Marzo 2017, 01:53 am
Hola:

He intentado descargar la versión ISO del Visual Studio Community 2017 (gratuito) en el cual ya no se puede porque no cabe en un DVD. Pero hay un truco para tenerlo todo en el local, a mi me ocupa unos 20 GB descargado. Más información de cómo se hace aquí.

Me sale al ejecutar el ejecutable este menú.


Ver zoom.

Lo he instaldo desde la Web y apenas me aparecen plantillas, ni siquiera me aparece el de Windows Form de C#, ni Visual Basic .net.

Ahora lo tengo descargado en local y desistanlé por vía Web por si acaso. Por si acaso, voy a instalar los tres que pone arriba wn Windowa.
Desarrollo de la plataforma universal de  Windows.
Desarrollo de escritorio .net
Desarrollo para el escritorio con C++.


En la página 10 de este documento de abajo indica las herramientas comunes de VS 2015 y en el VS 2017 no se donde está.

https://www.slideshare.net/Metaconta2/formulario-windows-con-visual-c

¿Alguna idea?

Saludos.

PD: En este mismo momento, instalando las tres primeras opciones.
187  Seguridad Informática / Hacking / Hackear una impresora en: 10 Febrero 2017, 13:10 pm
Hola:

Tengo una impresora por USB. Quiero aprender como se hackea desde red, al menos desde la Raspberry Pi o otro ordenador y que la impresora imprima. Hay gente que lo hacen y de modo cómico.


http://www.neoteo.com/impresora-parte-una-botnet-la-seguridad-las-impresoras-al-descubierto

Si hay que hacer un programa, pues se hace. ;)

Cualquier idea o sugerencia, bienvenido sea.

Saludos.
188  Programación / .NET (C#, VB.NET, ASP) / Pasar de C# a F# con Visual Studio Community 2015 en: 28 Enero 2017, 15:42 pm
Hola:

Mirando aquí este código en C#, está en C++ y VB .net, pero en F# no veo ni papa.

Cambiar de C# por F#:
Código
  1. using System;
  2. using System.IO.Ports;
  3.  
  4. class PortDataReceived
  5. {
  6.    public static void Main()
  7.    {
  8.        SerialPort mySerialPort = new SerialPort("COM1");
  9.  
  10.        mySerialPort.BaudRate = 9600;
  11.        mySerialPort.Parity = Parity.None;
  12.        mySerialPort.StopBits = StopBits.One;
  13.        mySerialPort.DataBits = 8;
  14.        mySerialPort.Handshake = Handshake.None;
  15.        mySerialPort.RtsEnable = true;
  16.  
  17.        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  18.  
  19.        mySerialPort.Open();
  20.  
  21.        Console.WriteLine("Press any key to continue...");
  22.        Console.WriteLine();
  23.        Console.ReadKey();
  24.        mySerialPort.Close();
  25.    }
  26.  
  27.    private static void DataReceivedHandler(
  28.                        object sender,
  29.                        SerialDataReceivedEventArgs e)
  30.    {
  31.        SerialPort sp = (SerialPort)sender;
  32.        string indata = sp.ReadExisting();
  33.        Console.WriteLine("Data Received:");
  34.        Console.Write(indata);
  35.    }
  36. }

He intentado encontrar tutoriales de F# en español, más bien estáenel MSDN de los foros oficiales.
https://msdn.microsoft.com/es-es/library/dd233160(v=vs.110).aspx
https://msdn.microsoft.com/es-es/library/ee241126(v=vs.110).aspx
https://msdn.microsoft.com/es-es/library/ee241127(v=vs.110).aspx

Para saber de que va está bien. Para hacer el minichat de arriba de C# a F# lo veo más complicado.

Vídeos del 2009, mejor algo que nada en español.

Segunda parte.

Casi no hay nada de video tutoriales en español, de PowerShell está habiendo más aunque este último es másbien para tareas administrativas.

¿Alguna ayuda?

Un cordial saludo.

PD: Como se nota que no mola a lagente F# y si otros lenguajes, sobre todo, hoy en día se usa VB 6 en el cual no se recomienda para equipos actuales y no lo sueltan ni por asomo. ;)
189  Informática / Electrónica / Diseñar tu propia luz de Led. en: 27 Enero 2017, 20:32 pm
Hola:

Cada vez que veola gente comprar plafones de Led, le advierten que con el tiempo pierden intensidad e iluminación o se apagan de repente.

Me acaban de regalar este.

Es para techo falso.
Downlight LED regulable empotrable y redondo en acabado blanco, con una potencia de 20W y 1700 lúmenes. Tono de luz neutra (4000K) sustituye al downlight de bajo consumo. Incluye fuente de alimentación (driver dimmable). Versión: 06-12-2014.

El transformador que viene dice ser de 100-240 VAC de entrada y salida 54-63 VDC 300 mA.y cuando lo mides con el tester en vacío te suelta 81 VDC.

Estas lámparas se cascan rápido y según indican aquí.
http://www.luisllamas.es/2013/04/verdades-y-mentiras-sobre-la-vida-util-de-los-led/

La verdad que hay gente que inventan sus propis diseños increibles.
https://es.pinterest.com/explore/l%C3%A1mpara-led-957789226697/

La mejor opción para bajo mi punto de vista, es construirse su propia lápara de Led, hasta la fuente de alimentación o suar una de calidad.



http://www.neoteo.com/diy-lampara-de-bajo-consumo-led

¿Alguna experiencia por parte de ustedes o opinión?

Saludos.
190  Programación / .NET (C#, VB.NET, ASP) / Hacer cambios de este código. en: 25 Enero 2017, 03:05 am
Hola:

Tengo este código de abajo que funciona bien. Lo que hace es, al recibir algún dato por el puerto serie, me lo almacena en un array y guarda el archivo en el disco duro. Hecho en C#.
Código
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.IO.Ports;
  5.  
  6. namespace Recibir_archivo_desde_Arduino_consola_02
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            string COM = "";
  13.  
  14.            // Tamaño ventana consola.
  15.            Console.WindowWidth = 55; // X. Ancho.
  16.            Console.WindowHeight = 15; // Y. Alto.
  17.            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"; // Título de la ventana.
  18.  
  19.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  20.            SerialPort Puerto_serie = new SerialPort();
  21.  
  22.            // Configuración.
  23.            Console.Write(@"
  24. Introduzca un número para seleccionar puerto COM.
  25. Por ejemplo el 4, sería COM4.
  26.  
  27. Puerto: ");
  28.            COM = Console.ReadLine(); // Escribir el número del puerto.
  29.            Console.Clear();
  30.  
  31.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  32.  
  33.  
  34.            Puerto_serie.BaudRate = 115200; // Baudios. 115200.
  35.            Puerto_serie.Parity = Parity.None; // Paridad.
  36.            Puerto_serie.DataBits = 8; // Bits de datos.
  37.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  38.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  39.  
  40.            // Establecer la lectura / escritura de los tiempos de espera.
  41.            Puerto_serie.ReadTimeout = -1; // 500.
  42.            Puerto_serie.WriteTimeout = -1; // 500.
  43.  
  44.            try
  45.            {
  46.                Puerto_serie.Open(); // Abrir el puerto serie.
  47.            }
  48.  
  49.            catch (IOException)
  50.            {
  51.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  52.                Console.CursorVisible = false;
  53.                Console.SetCursorPosition(16, 6);
  54.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  55.                o no lo encuentra.");
  56.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  57.            }
  58.  
  59.            catch (UnauthorizedAccessException e)
  60.            {
  61.                Console.WriteLine(e);
  62.            }
  63.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  64.  
  65.            Console.WriteLine("Esperando datos desde Arduino...");
  66.            Console.Read();
  67.            Puerto_serie.Close(); // Cerrar puerto.
  68.        }
  69.  
  70.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  71.  
  72.        {
  73.            try
  74.            {
  75.                SerialPort sp = (SerialPort)sender;
  76.                int contador = 0;
  77.                byte[] datosArray = new byte[17729]; // Aquí tengo que cambiar el valor cuando recibo datos desde el puerto serie.
  78.  
  79.                while (contador < datosArray.Length)
  80.                {
  81.  
  82.                    contador += sp.Read(datosArray, contador, datosArray.Length - contador);
  83.  
  84.                    Console.SetCursorPosition(10, 2);
  85.                    Console.Write("Datos recibidos:  {0}", contador);
  86.                    Console.WriteLine("                   ");
  87.  
  88.                    if (contador == 17729)
  89.                    {
  90.                        Console.WriteLine();
  91.                        Console.WriteLine("Creando archivo al disco duro...");
  92.                        File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
  93.                        Console.WriteLine();
  94.                        Console.WriteLine("Archivo creado. Ejecutando imagen.");
  95.                        Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
  96.                        Console.WriteLine();
  97.                        Console.WriteLine("Imagen ejecutada.");
  98.                        Console.WriteLine();
  99.                        Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  100.                        Console.WriteLine("FIN DE PROGRAMA.");
  101.                        Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
  102.                    }
  103.                }
  104.            }
  105.  
  106.  
  107.            catch (TimeoutException)
  108.            {
  109.                //maybe increase ReadTimeout or something, use exponential backoff, your call
  110.            }
  111.  
  112.            catch (IOException)
  113.            {
  114.                // Console.WriteLine("La operación de E/S se anuló por una salida de subproceso o por una solicitud de aplicación.");
  115.            }
  116.        }
  117.    }
  118. }
  119.  

Quiero tener ideas para modificar este programa.

Los datos del puerto serie puede llegar desde Arduino o desde otro PC. Como llega desde Arduino en este caso, tiene dos botones, si pulsa el primer botón, C# recibe ciertos comandos que son estos:

Si en Arduino presiono el primer botón, C# le llega este número de 5 Bytes en este caso, 17729. Ese valor tiene que incluirse aquí, en esta parte del código indicado abajo.

Código
  1. byte[] datosArray = new byte[17729];

Como puedes ver, he puesto manualmente el valor de este array 17729.

¿Cómo hago que al detectar cualquier valor, en este caso 17729 sea para el array datosArray?

Digo 17729 como ejemplo, si le llega 478, pues que sea 478.

Lo que no entiendo que luego de llegar 17729, que son solo 5 dígitos, llegará de inforamación 17729 Bytes detrás.

Si no haz entendido algo, preguntar para explicarlo de otra manera.

Saludos.
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 66
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines