Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Meta

#621
Hola:

Me ha llegado un e-mail de un conocido, por su forma de escribir, a pesar de ser su correo electrónico y me saludo con su nombre, la forma de escribir y color del texto no concuerta con él. Lo he intentado localizar y le respondí al correo:

CitarHola NOMBRE:

¿Me has enviado este mensaje?

Hola,

Vea estos documentos confidenciales que envié a usted a través de Google Drive CLICK AQUI iniciar sesión para ver estos documentos confidenciales..

Saludos,
NOMBRE


Es para saber si eres tu o fue un virus.

Saludos.

Si pinchas en el enlace, aparece que introduzca tu correo y contraseña, he puesto uno falso diciento: tu_padre@gmail.com
Contrasñea: No_me_robaras_la_contraseña.

Luego entré otra vez sin insertar nada de nada y entras igualmente a una Web que no pinta nada.

La web que te pide es esta.
http://bombayheightsny.com/documentary/googledrivez/page.html

Elijas el icono que elijas, puedes poner esto tanto en el email como en el password. kdsgfksdghfsd   y ldssldfgjldfgjsdflñ. Entras igualmente.

¿Alguien le ha pasado?

Un cordial saludo.
#622
Hola:

Gracias por responder.

Deja ver si lo paso así en Visual que me gusta más.



Primero en consola para luego adaptarlo en Visual que es más cómodo.

Luego te cuento como me va.
#623
Código (csharp) [Seleccionar]
Hola:

Estoy haciendo pruebas con los ejemplos en modo consola bajo Visual Studio Community 2015. Me da error y no encuentro la sulución, es más no entiendo lo que me quiere decir.

Modo cliente:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net; // No olvidar.
using System.Net.Sockets; // No olvidar.

namespace Chat_Cliente_UDP
{
    class Program
    {
        private const int listenPort = 11000;

        static void Main(string[] args)
        {
            bool done = false;

            UdpClient listener = new UdpClient(listenPort);
            IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);

            try
            {
                while (!done)
                {
                    Console.WriteLine("A la espera de la emisión.");
                    byte[] bytes = listener.Receive(ref groupEP);

                    Console.WriteLine("Recibido transmitido desde {0} :\n {1}\n",
                        groupEP.ToString(),
                        Encoding.ASCII.GetString(bytes, 0, bytes.Length));
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                listener.Close();
            }
        }

        public static int Main()
        {
            Main();

            return 0;
        }
    }
   
}



Gravedad    Código    Descripción    Proyecto    Archivo    Línea
Error    CS0017    El programa tiene más de un punto de entrada definido. Compile con /main para especificar el tipo que contiene el punto de entrada.    Chat_Cliente_UDP    c:\users\usuario\documents\visual studio 2015\Projects\Chat_Cliente_UDP\Chat_Cliente_UDP\Program.cs    16


Modo servidor:

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net; // No olvidar.
using System.Net.Sockets; // No olvidar.

namespace Chat_Servidor_UDP
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
            ProtocolType.Udp);

            IPAddress broadcast = IPAddress.Parse("127.0.0.1");

            byte[] sendbuf = Encoding.ASCII.GetBytes(args[0]);
            IPEndPoint ep = new IPEndPoint(broadcast, 11000);

            s.SendTo(sendbuf, ep);

            Console.WriteLine("Mensaje enviado a la dirección de difusión");
        }
    }
}




También conerrores.

Esto si que no me lo esperaba a pesar de es un ejemplo de este enlace.

Espero que me ayuden como solucionarlo. Por ahora voy a probarlo en modo local a mismo, luego con otro router lo comunico desde este ordenador a uno portatil en red que tengo en casa.

Espero resolver este problema indicado ahora.

Gracias por las respuestas amigos. ;)

Sigo adelante.
#624
Hola:

En esta Web podemos descargar las librerías del puerto paralelo, son del año vete a saber. Como hobby, recuperamos equipos viejos inclusos portátiles con puerto paralelo. En un PC de sobremesa, hay placas que no te vienen puerto paralelo dentro de la placa, otras si pero no por detrás. Para controlar puerto paralelo integrado en la placa con la librería, aquí hay un tutorial y funciona bien, no para las tarjetas PCI.

Si consigues una tarjeta PCI con puerto paralelo, estas librerís no sirven, te da unpantallazo azul, según me cuentan algunas personas de Internet. La dirección física que te da en la BIOS es para la placa integrada, las que no tienen puerto LTP p puierto paralelo, al poner una tarjeta PCI, si usas la misma dirección es cuando se cuelga Windows, pantalla azul. Así que tienes que poner el que te diga los driver en Adimistrador de dispositivos de la tarjeta PCI.

Tarjeta PIC puerto paralelo:


Librerías para puerto paralelo y código fuente:
http://logix4u.net/parallel-port/26-inpoutx64dll-for-win-xp-64-bit

Tengo Visual Studio Community 2015 para usarlo en 64 bits, momdificar dicha librería, antes que nada, como no se mucho el C++, esoy pescando, he estado mirando archivos por archivos en el código fuente a ver si encuentro alguna parte de cambiar la dirección que yo quiera.

El más largo es este llamado intout32drv.dll.
Código (cpp) [Seleccionar]
// inpout32drv.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "hwinterfacedrv.h"
#include "resource.h"
#include "conio.h"
#include "stdlib.h"

int inst(LPCTSTR pszDriver);
int start(LPCTSTR pszDriver);

//First, lets set the DRIVERNAME depending on our configuraiton.
#define DRIVERNAMEx64 "hwinterfacex64\0"
#define DRIVERNAMEi386 "hwinterface\0"

char str[10];
int vv;

HANDLE hdriver=NULL;
char path[MAX_PATH];
HINSTANCE hmodule;
SECURITY_ATTRIBUTES sa;
int sysver;

int Opendriver(BOOL bX64);
void Closedriver(void);

BOOL APIENTRY DllMain( HINSTANCE  hModule,
  DWORD  ul_reason_for_call,
  LPVOID lpReserved
  )
{

hmodule = hModule;
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
sysver = SystemVersion();
if(sysver==2)
{
Opendriver(IsXP64Bit());
}
break;
case DLL_PROCESS_DETACH:
if(sysver==2)
{
Closedriver();
}
break;
}
return TRUE;
}

/***********************************************************************/

void Closedriver(void)
{
if (hdriver)
{
OutputDebugString("Closing driver...\n");
CloseHandle(hdriver);
hdriver=NULL;
}
}

void _stdcall Out32(short PortAddress, short data)
{

switch(sysver)
{
case 1:
#ifdef _M_IX86
_outp( PortAddress,data); //Will ONLY compile on i386 architecture
#endif
break;
case 2:
unsigned int error;
DWORD BytesReturned;       
BYTE Buffer[3];
unsigned short * pBuffer;
pBuffer = (unsigned short *)&Buffer[0];
*pBuffer = LOWORD(PortAddress);
Buffer[2] = LOBYTE(data);

error = DeviceIoControl(hdriver,
IOCTL_WRITE_PORT_UCHAR,
&Buffer,
3,
NULL,
0,
&BytesReturned,
NULL);
break;
}


}

/*********************************************************************/

short _stdcall Inp32(short PortAddress)
{
BYTE retval(0);
switch(sysver)
{
case 1:
#ifdef _M_IX86
retval = _inp(PortAddress);
#endif
return retval;
break;
case 2:
unsigned int error;
DWORD BytesReturned;
unsigned char Buffer[3];
unsigned short * pBuffer;
pBuffer = (unsigned short *)&Buffer;
*pBuffer = LOWORD(PortAddress);
Buffer[2] = 0;
error = DeviceIoControl(hdriver,
IOCTL_READ_PORT_UCHAR,
&Buffer,
2,
&Buffer,
1,
&BytesReturned,
NULL);

return((int)Buffer[0]);

break;
}
return 0;
}

/*********************************************************************/

int Opendriver(BOOL bX64)
{
OutputDebugString("Attempting to open InpOut driver...\n");

char szFileName[MAX_PATH] = {NULL};
if (bX64)
strcpy_s(szFileName, MAX_PATH, "\\\\.\\hwinterfacex64"); //We are 64bit...
else
strcpy_s(szFileName, MAX_PATH, "\\\\.\\hwinterface"); //We are 32bit...

hdriver = CreateFile(szFileName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

if(hdriver == INVALID_HANDLE_VALUE)
{
if(start(bX64 ? DRIVERNAMEx64 : DRIVERNAMEi386))
{
inst(bX64 ? DRIVERNAMEx64 : DRIVERNAMEi386);
start(bX64 ? DRIVERNAMEx64 : DRIVERNAMEi386);

hdriver = CreateFile(szFileName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

if(hdriver != INVALID_HANDLE_VALUE)
{
OutputDebugString("Successfully opened ");
OutputDebugString(bX64 ? DRIVERNAMEx64 : DRIVERNAMEi386);
OutputDebugString(" driver");
return 0;
}
}
return 1;
}
OutputDebugString("Successfully opened ");
OutputDebugString(bX64 ? DRIVERNAMEx64 : DRIVERNAMEi386);
OutputDebugString(" driver");
return 0;
}

/***********************************************************************/
int inst(LPCTSTR pszDriver)
{
char szDriverSys[MAX_PATH];
strcpy_s(szDriverSys, MAX_PATH, pszDriver);
strcat_s(szDriverSys, MAX_PATH, ".sys\0");

SC_HANDLE  Mgr;
SC_HANDLE  Ser;
GetSystemDirectory(path , sizeof(path));
HRSRC hResource = FindResource(hmodule, MAKEINTRESOURCE(IDR_BIN1), "bin");
if(hResource)
{
HGLOBAL binGlob = LoadResource(hmodule, hResource);

if(binGlob)
{
void *binData = LockResource(binGlob);

if(binData)
{
HANDLE file;
strcat_s(path, sizeof(path), "\\Drivers\\");
strcat_s(path, sizeof(path), szDriverSys);

file = CreateFile(path,
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
0,
NULL);

if(file)
{
DWORD size, written;

size = SizeofResource(hmodule, hResource);
WriteFile(file, binData, size, &written, NULL);
CloseHandle(file);

}
}
}
}

Mgr = OpenSCManager (NULL, NULL,SC_MANAGER_ALL_ACCESS);
if (Mgr == NULL)
{ //No permission to create service
if (GetLastError() == ERROR_ACCESS_DENIED)
{
return 5;  // error access denied
}
}
else
{
char szFullPath[MAX_PATH] = "System32\\Drivers\\\0";
strcat_s(szFullPath, MAX_PATH, szDriverSys);
Ser = CreateService (Mgr,                     
pszDriver,                       
pszDriver,                       
SERVICE_ALL_ACCESS,               
SERVICE_KERNEL_DRIVER,             
SERVICE_SYSTEM_START,               
SERVICE_ERROR_NORMAL,               
szFullPath, 
NULL,                               
NULL,                             
NULL,                               
NULL,                             
NULL                               
);
}
CloseServiceHandle(Ser);
CloseServiceHandle(Mgr);

return 0;
}
/**************************************************************************/
int start(LPCTSTR pszDriver)
{
SC_HANDLE  Mgr;
SC_HANDLE  Ser;

Mgr = OpenSCManager (NULL, NULL,SC_MANAGER_ALL_ACCESS);

if (Mgr == NULL)
{ //No permission to create service
if (GetLastError() == ERROR_ACCESS_DENIED)
{
Mgr = OpenSCManager (NULL, NULL,GENERIC_READ);
Ser = OpenService(Mgr,pszDriver,GENERIC_EXECUTE);
if (Ser)
{    // we have permission to start the service
if(!StartService(Ser,0,NULL))
{
CloseServiceHandle (Ser);
return 4; // we could open the service but unable to start
}

}

}
}
else
{// Successfuly opened Service Manager with full access
Ser = OpenService(Mgr,pszDriver,GENERIC_EXECUTE);
if (Ser)
{
if(!StartService(Ser,0,NULL))
{
CloseServiceHandle (Ser);
return 3; // opened the Service handle with full access permission, but unable to start
}
else
{
CloseServiceHandle (Ser);
return 0;
}
}
}
return 1;
}


No quiere decir que sea ese precisamente.

¿Alguna ayuda?

Saludos.
Un cordial saludo.
#625
Electrónica / [TUTORIAL] Interfaz Javay Arduino
6 Diciembre 2015, 19:42 PM


Tutorial diseño de interfaz con Java bajo NetBeans para controlar Arduino desde el puerto serie / USB, odrás encender y apagar un Led, recibir mensajes de textos o comandos desde Arduino.

[youtube=640,360]https://www.youtube.com/watch?v=HySzBln0UVE[/youtube]

Ver tutorial.

Un cordial saludo.
#626
Hola:

He estado mirando hacer códigos de Visual C++ .net e incluso crear un Windows Form con Visual Studio Community 2015.

Ver tutorial.

He estado mirando el MFC, ya que muchos lo prefieren más porque es un C++ nativo y trabaja más rápido como indica en esta Web.

https://msdn.microsoft.com/es-es/library/ms228787%28v=vs.90%29.aspx

Con el winAPI es más complicado, este tema no lo tocaré.

Centrándonos en el MFC, hasta para crear un formulario requiere su tiempo, aquí muestra un ejemplo de como hacerlo.

[youtube=640,360]https://www.youtube.com/watch?v=d1g3ISNbwj0[/youtube]

No se nada sobre programación de MFC, y quiero pasar del Visual C++ .net de este código mostrado a partir de la página 45 de este tutorial.

Antes que nada. ¿Hay muchos cambios al programarlo del .net a MFC?

Se trata de leer el puerto serie y enviar datos.

He creado el formulario y no aparece los botones MAximizar, minimizar y cerrar.

¿Cómo se crean?

Un cordial saludos.
#627


Presento tutorial como crear una interfaz con Visual Basic 6 y Arduino como encender y apagar un Led, recibir mensajes de texto desde Arduino de forma por paso a paso, amena y cómoda posible para los iniciados en el mundo de la programación y la electrónica.

Puedes descargar el tutorial en PDF o XPS con ejemplos incluidos.

Ver tutorial.

Un cordial saludos.

PD: Versión VB .net.
#628
Hola:

Vaya, tu código es mucho más corto.

He intentado poner la hora y fecha en los dos últimos case.

Código (csharp) [Seleccionar]
                   case "4=OFF":
                       pictureBox4.Image = Properties.Resources.Led_rojo_apagado;
                       richTextBox1.Text += " " + DateTime.Now.ToString();
                       Recibidos = "";
                       break;


El resultado me da esto:
Citar1=OFF 2=ON 3=OFF 4=OFF
04/12/2015 5:53:25

Debería aparecer al lado como indica abajo.
Citar1=OFF 2=ON 3=OFF 4=OFF 04/12/2015 5:53:25

No encuentro como hacerlo, no veo porqué sale abajo.

Por cierto, voy a probar tu código que es más corto yy tienes razón del manejo del "número=".

Saludos.


Edito:

Ya me sale pero a veces con fallos de datos en el richtextbox.

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO.Ports; // No olvidar.

namespace Entrada_Arduino_AWF_3_CS
{
   public partial class Form1 : Form
   {
       // Utilizaremos un string como buffer de recepción.
       string Recibidos;

       public Form1()
       {
           InitializeComponent();

           if (!serialPort1.IsOpen)
           {
               try
               {
                   serialPort1.Open();
               }
               catch (System.Exception ex)
               {
                   MessageBox.Show(ex.ToString());
               }

               serialPort1.DataReceived += new SerialDataReceivedEventHandler(Recepcion);
           }
       }
       // Al recibir datos.
       private void Recepcion(object sender, SerialDataReceivedEventArgs e)
       {
           // Acumula los caracteres recibidos a nuestro 'buffer' (string).
           Recibidos += serialPort1.ReadExisting();

           // Invocar o llamar al proceso de tramas.
           Invoke(new EventHandler(Actualizar));
       }

       // Procesar los datos recibidos en el bufer y extraer tramas completas.
       private void Actualizar(object sender, EventArgs e)
       {

           // Asignar el valor de la trama al richTextBox.
           richTextBox1.Text += Recibidos;

           // Selecciona la posición final para leer los mensajes entrantes.
           richTextBox1.SelectionStart = richTextBox1.Text.Length;

           // Mantiene el scroll en la entrada de cada mensaje.
           richTextBox1.ScrollToCaret();

           char[] Delimitador = { ' ', '\r', '\n' };

           string[] Palabras = Recibidos.Split(Delimitador);


           foreach (string Comandos in Palabras)
           {
               switch (Comandos)
               {
                   case "1=ON":
                       pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                       Recibidos = "";
                       break;

                   case "1=OFF":
                       pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                       Recibidos = "";
                       break;

                   case "2=ON":
                       pictureBox2.Image = Properties.Resources.Led_rojo_encendido;
                       Recibidos = "";
                       break;

                   case "2=OFF":
                       pictureBox2.Image = Properties.Resources.Led_rojo_apagado;
                       Recibidos = "";
                       break;

                   case "3=ON":
                       pictureBox3.Image = Properties.Resources.Led_rojo_encendido;
                       Recibidos = "";
                       break;

                   case "3=OFF":
                       pictureBox3.Image = Properties.Resources.Led_rojo_apagado;
                       Recibidos = "";
                       break;

                   case "4=ON":
                       pictureBox4.Image = Properties.Resources.Led_rojo_encendido;
                       Recibidos = "";
                       break;

                   case "4=OFF":
                       pictureBox4.Image = Properties.Resources.Led_rojo_apagado;
                       Recibidos = "";
                       break;
           }
         }

           richTextBox1.Text += "        " + DateTime.Now.ToString() + "\r";
       }

       private void Form1_FormClosing(object sender, FormClosingEventArgs e)
       {
           if (serialPort1.IsOpen) // ¿El puerto está abierto?
           {
               serialPort1.Close(); // Puerto cerrado.
           }
       }

       void Actualizar()
       {
           byte[] mBuffer = Encoding.ASCII.GetBytes("ACTUALIZAR"); // Envía comando ACTUALIZAR por el puerto.
           serialPort1.Write(mBuffer, 0, mBuffer.Length);
       }

       private void button_Actualizar_Click(object sender, EventArgs e)
       {
           Actualizar();
       }

       private void Form1_Load(object sender, EventArgs e)
       {
           Actualizar();
       }

       private void button2_Click(object sender, EventArgs e)
       {
           richTextBox1.Clear(); // Limpiar contenido del richTextBox.
           Recibidos = "";
       }
   }
}




Saludos.
#629
Hola:

Buscando el trozo de código llegué  aesta Web.

https://msdn.microsoft.com/es-es/library/ms228388.aspx?f=255&MSPPError=-2147217396

Hice el código completo y compila, pero con peros.
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO.Ports; // No olvidar.

namespace Entrada_Arduino_AWF_3_CS
{
    public partial class Form1 : Form
    {
        // Utilizaremos un string como buffer de recepción.
        string Recibidos;

        public Form1()
        {
            InitializeComponent();

            if (!serialPort1.IsOpen)
            {
                try
                {
                    serialPort1.Open();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

                serialPort1.DataReceived += new SerialDataReceivedEventHandler(Recepcion);
            }
        }
        // Al recibir datos.
        private void Recepcion(object sender, SerialDataReceivedEventArgs e)
        {
            // Acumula los caracteres recibidos a nuestro 'buffer' (string).
            Recibidos += serialPort1.ReadExisting();

            // Invocar o llamar al proceso de tramas.
            Invoke(new EventHandler(Actualizar));
        }

        // Procesar los datos recibidos en el bufer y extraer tramas completas.
        private void Actualizar(object sender, EventArgs e)
        {

            // Asignar el valor de la trama al richTextBox.
            richTextBox1.Text = Recibidos + "\n";

            // Selecciona la posición final para leer los mensajes entrantes.
            richTextBox1.SelectionStart = richTextBox1.Text.Length;

            // Mantiene el scroll en la entrada de cada mensaje.
            richTextBox1.ScrollToCaret();

            char[] delimiterChars = { ' ', '\r', '\n' };

            string[] words = Recibidos.Split(delimiterChars);


            foreach (string Comandos in words)
            {
                switch (Comandos)
                {
                    case "1=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "1=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;

                    case "2=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "2=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;

                    case "3=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "3=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;

                    case "4=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "4=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;
            }
          }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) // ¿El puerto está abierto?
            {
                serialPort1.Close(); // Puerto cerrado.
            }
        }
    }
}


Por fin entra en el switch, lo curioso que a partir del segundo case, se comporta que lo ejecuta, en realidad no se activa los led, solo el primero.

Saludos.


Edito:
Me dicuanta que en los pictureBos tenía los mismo y cada uno tiene que ser 2, 3 y 4, ahora me funciona todo.

Gracias por la ayuda.
#630
Buenas:

Lo pusiste en Visual Basic, eejjee.

Código (csharp) [Seleccionar]
string[] a = null;
a = Strings.split("1=ON 2=ON 3=OFF 4=OFF", " ");


¿Hay que colocarlo así?

Código (csharp) [Seleccionar]
string[] a = Recibidos.split("1=ON 2=ON 3=OFF 4=OFF", " ");

            switch (Recibidos)
                {
                    case "1=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "1=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;

                    case "2=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "2=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;

                    case "3=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "3=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;

                    case "4=ON":
                        pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
                        Recibidos = "";
                        break;

                    case "4=OFF":
                        pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
                        Recibidos = "";
                        break;
            }


Al compilar me dice este error.

Gravedad   Código   Descripción   Proyecto   Archivo   Línea
Error   CS1061   'string' no contiene una definición para 'split' ni se encuentra ningún método de extensión 'split' que acepte un primer argumento del tipo 'string' (¿falta alguna directiva using o una referencia de ensamblado?)   Entrada_Arduino_AWF_3_CS   C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Entrada_Arduino_AWF_3_CS\Entrada_Arduino_AWF_3_CS\Form1.cs   61


Saludos.