C# 通过Main窗口使用SerialPort变量
我正在使用一个函数在正确的串行COM端口上查找我的设备,该端口通过它发送一个消息,以便我可以通过我的WPF应用程序识别它。我想做的是,在我所有的空隙中使用SerialPort变量C# 通过Main窗口使用SerialPort变量,c#,wpf,serial-port,global-variables,C#,Wpf,Serial Port,Global Variables,我正在使用一个函数在正确的串行COM端口上查找我的设备,该端口通过它发送一个消息,以便我可以通过我的WPF应用程序识别它。我想做的是,在我所有的空隙中使用SerialPort变量 private string CheckPort(){ string[] listPort = SerialPort.GetPortNames(); foreach (string namePort in listPort){ SerialPort port = new SerialPo
private string CheckPort(){
string[] listPort = SerialPort.GetPortNames();
foreach (string namePort in listPort){
SerialPort port = new SerialPort(namePort, 9600);
if(!port.IsOpen){
port.Open();
string data = port.ReadTo("\r\n");
if (data == "A"){
port.Write("777"); //to make it stop sending "A"
return namePort;
}
}
}
}
public MainWindow(){
string target = CheckPort();
SerialPort port = new SerialPort(target, 9600);
InitializeComponent();
}
private void Button_ClickClose(object sender, RoutedEventArgs e){
blablabla
port.ReadTo("\r\n"); // port doesn't exist in the current context
port.Write("hey");
}
那么,有没有一种方法可以保持我的CheckPort功能并能够使用我的端口呢 使用全局变量
private string CheckPort(){
string[] listPort = SerialPort.GetPortNames();
foreach (string namePort in listPort){
if(!Port.IsOpen){
Port.Open();
string data = Port.ReadTo("\r\n");
if (data == "A"){
Port.Write("777"); //to make it stop sending "A"
return namePort;
}
}
}
}
public MainWindow(){
string target = CheckPort();
Port = new SerialPort(target, 9600);
InitializeComponent();
}
private void Button_ClickClose(object sender, RoutedEventArgs e){
blablabla
port.ReadTo("\r\n"); // port doesn't exist in the current context
port.Write("hey");
}
private SerialPort Port;
从方法返回SerialPort的实例,并将其存储在窗口字段而不是局部变量中:
private SerialPort CheckPort()
{
string[] listPort = SerialPort.GetPortNames();
foreach(string namePort in listPort)
{
SerialPort port = new SerialPort(namePort, 9600);
if (!port.IsOpen)
{
port.Open();
string data = port.ReadTo("\r\n");
if (data == "A")
{
port.Write("777"); // to make it stop sending "A"
return port;
}
}
}
return null;
}
SerialPort port;
public MainWindow()
{
port = CheckPort();
InitializeComponent();
}
private void Button_ClickClose(object sender, RoutedEventArgs e)
{
if (port == null) return;
port.ReadTo("\r\n");
port.Write("hey");
}