Principales respuestas
Novato en Visual Studio, WPF para comunicar dispositivos a través de TCP IP

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
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
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
-
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.