我需要将一个串口从一种形式传递到另一种形式,我在以另一种形式使用它后设置端口时遇到问题。 我已经搜索了这个答案的高低,但我可能只是不理解这个问题的其他答案。我确切地知道我遇到的问题是什么我只能弄明白如何解决它。我是C#的新手,但在C ++方面有着不错的背景。在C ++中,我只是通过引用来解决这个问题。我试过但是无济于事
//In Form 2
private void Connect_Click(object sender, EventArgs e)
{
if (isConnected)
{
form1.unmountArduino();
}
else
{
portF2 = form1.borrowPort();
bool success = form1.mountArduino(ComCombo.Text,portF2);
if (success)
{
this.Close(); //If we connect close the form
}
else
{
Application.Exit(); //If it fails just close application for now
}
}
}
// In form 1
public bool mountArduino(string selectedPort, SerialPort port)
{
try
{
port = new SerialPort(selectedPort, 9600, Parity.None, 8, StopBits.One);
port.Open();
isConnected = port.IsOpen;
port.Write("#STAR\n"); //This Command Writes just fine
returnPort(port); // Setter Function
return true;
}
catch
{
MessageBox.Show("Unable to Connect to COM Port");
return false;
}
}
public SerialPort borrowPort()
{
return port;
}
public void returnPort(SerialPort usedPort)
{
this.port = usedPort;
}
private void stepForward_Click(object sender, EventArgs e)
{
port.Write("#FO"+stepBox.Text+"\n"); // Here is where I get my error
//Exception: (Object reference not set to an instance of an object)
}
所有这些代码都没有问题,除非我尝试单击表单上的按钮并通过串行端口发送另一个命令。然后它说端口超出范围并且为空。这是有道理的,因为我在一个函数中创建了端口,但在我看来, setter函数应该已经处理好了。 感谢您的帮助,我已经到处寻找,但似乎找不到为什么setter功能无效的确切答案。