
C#串口通讯。主窗口中添加了个串口控件,mySerialPort mysp,在主窗口LOAD的时候初始化,并打开了串口。
在菜单栏的“串口设置"CLICK之后NEW了一个SET窗口,在这个窗口下,调用了mysp的closeport(关闭串口)函数,却无法将串口关闭(在主窗口调用是可以实现关闭...
在菜单栏的“串口设置" CLICK之后NEW了一个SET窗口,在这个窗口下,调用了mysp的closeport(关闭串口)函数,却无法将串口关闭(在主窗口调用是可以实现关闭的),请问这里具体要如何实现。其实我也就是在SET窗口完成新的端口号和波特率设置,并重新给主窗口的mysp赋值并重启串口。请给我个具体的实现思路,谢谢。(在同一个窗口下我就能实现,跨窗口不知道怎么弄)
展开
展开全部
我刚才特意写了个demo进行测试,你所说的这种要求是完全可以的.
我把一些关键部分的代码贴出来好了.
//-------------------------------------------------------------
//窗体1有serialPort1对象.
//按钮点击事件函数
private void button2_Click(object sender, EventArgs e)
{
serialPort1.BaudRate = 9600;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.PortName = "COM1";
serialPort1.Open();
}
//打开form2的函数
private void button1_Click(object sender, EventArgs e)
{
using (Form2 form2 =new Form2 ())
{
form2.serialport = serialPort1;
form2.ShowDialog();
}
}
//form2里的关键代码
public SerialPort serialport { get; set; }
//点击form2中的按钮后关闭串口对象
private void button1_Click(object sender, EventArgs e)
{
serialport.Close();
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
我把一些关键部分的代码贴出来好了.
//-------------------------------------------------------------
//窗体1有serialPort1对象.
//按钮点击事件函数
private void button2_Click(object sender, EventArgs e)
{
serialPort1.BaudRate = 9600;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.PortName = "COM1";
serialPort1.Open();
}
//打开form2的函数
private void button1_Click(object sender, EventArgs e)
{
using (Form2 form2 =new Form2 ())
{
form2.serialport = serialPort1;
form2.ShowDialog();
}
}
//form2里的关键代码
public SerialPort serialport { get; set; }
//点击form2中的按钮后关闭串口对象
private void button1_Click(object sender, EventArgs e)
{
serialport.Close();
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
追问
public SerialPort serialport { get; set; } 我完全照您的代码弄的,这句话报错, SerialPort 是什么东东?要添加控件?这里报错,以至于后面的 serialport无法使用。是不是要在每个窗口里面添加一个串口控件呀,还是?
追答
SerialPort 不就是dotnet自带的串口通信组件么.在工具栏里都能拖出来的.
定义SerialPort 属性要引用 using System.IO.Ports;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询