当我打开Form1时,我可以访问com端口,但没有问题。我有一个Form1打开Form2的按钮。当Form2打开时,我得到“访问端口'COM4'被拒绝。”在Form1上。这里是打开COM端口的要求。打开第二个窗体后访问被拒绝com端口C#
private void GeneralTimer_Tick(object sender, EventArgs e)
{
if (firstRun == 0)
{
init();
}
string selectedItem;
selectedItem = comSelect.Text;
updateSpeed();
Fan1Val.Value = Convert.ToInt32(Fan1Val.Value);
Fan2Val.Value = Convert.ToInt32(Fan2Val.Value);
if (selectedItem != null && (selectedItem.Contains("COM")))
{
if (!serialPort1.IsOpen)
{
if (COMPORT != selectedItem)
{
COMPORT = selectedItem;
serialPort1.PortName = selectedItem;
saveToFile("bin", "com", COMPORT);
}
serialPort1.Open(); //<----- I get the error on this line
}
updateRPMs();
}
}
这是我如何打开窗体2:
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2("Fan1");
form2.ShowDialog();
}
我新的C#和任何帮助,将不胜感激。
编辑
两个代码块在Form1中,我并不想从From2访问COM端口。
是它已经从第一种形式开放?你不能打开它两次......你需要记住关闭COM端口,而不是关闭COM端口会导致问题(即使在随后的程序重新启动时,它可能认为端口在其他地方打开)。 –
@Ron第二种形式不打开它,如果它尚未打开,我只打开它。在程序关闭之前,程序会关闭端口。 –
那么你从第一个表单传递打开的实例到第二个表单来使用?你不能只用相同的端口名创建一个新的'SerialPort',并期望状态能够跨越实例。 –