0
我有几个窗口的应用程序(实际上它的两个几乎与一些功能相同的窗口)。其中一项功能是从COM端口读取数据(读取加权机的重量)。问题是,它在第一个窗口中工作完美,但是当我关闭它并打开另一个窗口时,然后单击相同的函数(让它称为计算重量),即时获取此错误消息: 访问端口'COM1'被拒绝。从串口接收数据时出错
代码:
private void calculateWeight_Click(object sender, RoutedEventArgs e)
{
sp = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
tekst = string.Empty;
sp.Open();
sp.WriteLine(((char)5).ToString());
sp.WriteLine(((char)17).ToString());
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
}
private delegate void UpdateUi(string s);
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
tekst += sp.ReadExisting();
if (tekst.Contains('S') && tekst.Length > 14)
Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUi(czytajWage), tekst);
}
string tekst = string.Empty;
void czytajWage(string s)
{
string w = "";
for (int i = 5; i < 14; i++)
{
w += s[i];
}
MessageBox.Show(w);
w = "";
tekst = "";
sp.DataReceived -= sp_DataReceived;
}
任何人都可以帮助吗? ;)
关闭窗口时是否关闭端口? –
您不能共享串行端口。当窗口关闭并在另一个窗口中再次打开时关闭SerialPort也非常麻烦。此处的最佳做法是将与SerialPort一起使用的代码分离到一个单独的类中,并且只有该类的一个实例。将数据从视图中分离出来。 –