私はいくつかのウィンドウを持つアプリケーションを持っています(実際には、いくつかの機能を持つ2つのほぼ同じウィンドウです)。その機能の 1 つは、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;
}
誰でも助けることができますか?;)