none
Novato en Visual Studio, WPF para comunicar dispositivos a través de TCP IP RRS feed

  • Pregunta

  • Buenos días,

    Soy novato en Visual Studio y tengo bastantes dudas sobre como llevar a cabo un nuevo proyecto en el que me he embarcado.

    En este proyecto, basicamente tengo que comunicarme desde un PC a través de TCP IP con 2 dispositivos más (dispositivos industriales, como por ejemplo, un robot)... Y en el futuro, desde el programa que estoy creando en Visual Studio, enviar archivos .txt o similar hacia estos dispositivos...

    Mi pregunta es la siguiente: puedo realizarlo tanto en WPF o Windows Forms? existen estas funcionalidades en ambos marcos de trabajo? Tengo alguna limitación para esta aplicación para usar uno u otro? Podría combinarlos dentro del mismo proyecto?

    Disculpad si son preguntas muy tontas, pero es que soy bastante novato en esto

    Muchas gracias

    viernes, 12 de febrero de 2021 8:25

Respuestas

  • Sí, puedes hacerlo tanto en Windows Forms como en WPF. Para realizar comunicaciones "en bruto" directamente sobre TCP se utiliza un "Socket". Hay dos clases para manejarlo, llamadas TcpClient y TcpListener. Se usa una u otra dependiendo de que quieras iniciar desde tu programa la comunicación hacia el dispositivo externo, o poner tu programa "a la escucha" para que el dispositivo externo inicie la comunicación hacia él. Las dos clases están disponibles tanto en Winforms como e WPF, así que no hay ningún problema desde ese punto de vista.

    Ambos tienen la misma limitación: cuando recibes algo por TCP no puedes presentarlo en pantalla desde la misma rutina que lo recibe, porque se recibe en un hilo diferente al de la interfaz de usuario y ni Winforms ni WPF admiten acceder a la pantalla desde otro hilo, así que en ambos casos tienes que aplicar las técnicas de programación multi-hilo para transferir la ejecución al hilo principal.

    En cuanto a la pregunta de si puedes combinarlos en el mismo proyecto: Sí, es factible alojar un control de WPF dentro de un Winform y también alojar un control de Winforms dentro de un formulario WPF. Esto se hace por mediación de sendos controles especiales que actúan como contenedor del control que quieres alojar.

    • Marcado como respuesta EricRRModerator lunes, 15 de febrero de 2021 17:57
    viernes, 12 de febrero de 2021 9:05

Todas las respuestas

  • Sí, puedes hacerlo tanto en Windows Forms como en WPF. Para realizar comunicaciones "en bruto" directamente sobre TCP se utiliza un "Socket". Hay dos clases para manejarlo, llamadas TcpClient y TcpListener. Se usa una u otra dependiendo de que quieras iniciar desde tu programa la comunicación hacia el dispositivo externo, o poner tu programa "a la escucha" para que el dispositivo externo inicie la comunicación hacia él. Las dos clases están disponibles tanto en Winforms como e WPF, así que no hay ningún problema desde ese punto de vista.

    Ambos tienen la misma limitación: cuando recibes algo por TCP no puedes presentarlo en pantalla desde la misma rutina que lo recibe, porque se recibe en un hilo diferente al de la interfaz de usuario y ni Winforms ni WPF admiten acceder a la pantalla desde otro hilo, así que en ambos casos tienes que aplicar las técnicas de programación multi-hilo para transferir la ejecución al hilo principal.

    En cuanto a la pregunta de si puedes combinarlos en el mismo proyecto: Sí, es factible alojar un control de WPF dentro de un Winform y también alojar un control de Winforms dentro de un formulario WPF. Esto se hace por mediación de sendos controles especiales que actúan como contenedor del control que quieres alojar.

    • Marcado como respuesta EricRRModerator lunes, 15 de febrero de 2021 17:57
    viernes, 12 de febrero de 2021 9:05
  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    viernes, 12 de febrero de 2021 15:20
    Moderador