Principales respuestas
Manejar RS232

Pregunta
-
Hola:
Con la tecnología WPF. ¿Se puede alguna manera controlar el puerto serie RS232?
Se que en el otro tiene el componente serialPort1, pero en WPF no lo tiene. Por eso quiero saber si en realidad se puede hacer.
Por ahora uso el Visual C# 2010 Express en Inglés. A lo mejor se puede hacer el de pago.
Saludo.
Respuestas
-
Hola Metaconta
En WPF puedes usar la clase Serialport definiendola por código de esta manera:
Class MainWindow Private WithEvents puertocom As System.IO.Ports.SerialPort End Class
al declararla con eventos podrás acceder a ellos como si fuese un control presente en xaml en el desplegable de objetos y eventos que tienes en la parte superior de la ventana de código.
Espero que te sea util, un gran saludo!
MCTS .NET Framework 3.5 Windows Forms Application Development
MCTS .NET Framework 3.5 Windows Presentation Foundation
Visita mi Blog
Sigueme en Twitter- Propuesto como respuesta Josue YerayMVP, Moderator sábado, 15 de mayo de 2010 11:19
- Marcado como respuesta Metaconta sábado, 15 de mayo de 2010 13:00
-
Hola metaconta
Debes crear una instancia de serialport para poder usarlo.
En c# seria algo así:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.IO.Ports; namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { //Declaramos nuestra instancia a nivel de clase private SerialPort PuertoSerie = new SerialPort(); public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { PuertoSerie.PortName = "COM1"; PuertoSerie.Open(); // Usamos nuestra instancia para trabajar con el serialport byte[] mBuffer = new byte[1]; mBuffer[0] = 0x74; // ASCII la letra "t". PuertoSerie.Write(mBuffer, 0, mBuffer.Length); // Usamos nuestra instancia para trabajar con el serialport } } }
Espero que te sirva, un gran saludo!
MCTS .NET Framework 3.5 Windows Forms Application Development
MCTS .NET Framework 3.5 Windows Presentation Foundation
Visita mi Blog
Sigueme en Twitter- Propuesto como respuesta Josue YerayMVP, Moderator sábado, 15 de mayo de 2010 13:51
- Marcado como respuesta Metaconta sábado, 15 de mayo de 2010 14:46
Todas las respuestas
-
Hola Metaconta
En WPF puedes usar la clase Serialport definiendola por código de esta manera:
Class MainWindow Private WithEvents puertocom As System.IO.Ports.SerialPort End Class
al declararla con eventos podrás acceder a ellos como si fuese un control presente en xaml en el desplegable de objetos y eventos que tienes en la parte superior de la ventana de código.
Espero que te sea util, un gran saludo!
MCTS .NET Framework 3.5 Windows Forms Application Development
MCTS .NET Framework 3.5 Windows Presentation Foundation
Visita mi Blog
Sigueme en Twitter- Propuesto como respuesta Josue YerayMVP, Moderator sábado, 15 de mayo de 2010 11:19
- Marcado como respuesta Metaconta sábado, 15 de mayo de 2010 13:00
-
Hola:
Lo útil me ha servido que me confirmaras que es posible, uso el C#, deja ver si puedo hacerlo. Lo qu eno entiendo el motivo de no poner el componente hecho como ocurre con el formulario normal que si lo posee y es extremadamente cómodo.
Voy a investigar a ver si logro funcionar el puerto serie.
Con WPF quiero hacer un manual como he hecho con WFA sobre el puerto serie.
Ver manual C++ y Visual Basic .net
Saludo.
EDITO :
Hola de nuevo.
Haciendo pruebas me da error con WPF.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.IO.Ports; // No olvidar. namespace Puerto_serie_WPF { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { SerialPort.Open(); // Error aquí. byte[] mBuffer = new byte[1]; mBuffer[0] = 0x74; // ASCII la letra "t". SerialPort.Write(mBuffer, 0, mBuffer.Length); // Error aquí. } } }
Error 1 An object reference is required for the non-static field, method, or property 'System.IO.Ports.SerialPort.Open()' C:\Documents and Settings\Hunter\Mis documentos\Visual Studio 2010\Projects\Puerto_serie_WPF\Puerto_serie_WPF\MainWindow.xaml.cs 31 13 Puerto_serie_WPFError 2 An object reference is required for the non-static field, method, or property 'System.IO.Ports.SerialPort.Write(byte[], int, int)' C:\Documents and Settings\Hunter\Mis documentos\Visual Studio 2010\Projects\Puerto_serie_WPF\Puerto_serie_WPF\MainWindow.xaml.cs 34 13 Puerto_serie_WPF
Saludo.
- Editado Metaconta sábado, 15 de mayo de 2010 13:42 Poner códigos.
-
Hola metaconta
Debes crear una instancia de serialport para poder usarlo.
En c# seria algo así:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.IO.Ports; namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { //Declaramos nuestra instancia a nivel de clase private SerialPort PuertoSerie = new SerialPort(); public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { PuertoSerie.PortName = "COM1"; PuertoSerie.Open(); // Usamos nuestra instancia para trabajar con el serialport byte[] mBuffer = new byte[1]; mBuffer[0] = 0x74; // ASCII la letra "t". PuertoSerie.Write(mBuffer, 0, mBuffer.Length); // Usamos nuestra instancia para trabajar con el serialport } } }
Espero que te sirva, un gran saludo!
MCTS .NET Framework 3.5 Windows Forms Application Development
MCTS .NET Framework 3.5 Windows Presentation Foundation
Visita mi Blog
Sigueme en Twitter- Propuesto como respuesta Josue YerayMVP, Moderator sábado, 15 de mayo de 2010 13:51
- Marcado como respuesta Metaconta sábado, 15 de mayo de 2010 14:46
-