如何通过wpf中的代码更改系统的COM端口设置(位,数据位,奇偶校验,停止位和流量控制)?

时间:2012-07-14 19:57:52

标签: c# wpf serial-port

public partial class MainWindow : Window
{
    public MainWindow()
    {
        this.InitializeComponent();

                SerialPort MySerialPort = new SerialPort();

                txt_1.Text = MySerialPort.BaudRate.ToString();
                txt_2.Text = MySerialPort.DataBits.ToString();
                txt_3.Text = MySerialPort.Parity.ToString().ToUpper();
                txt_4.Text = MySerialPort.StopBits.ToString().ToUpper();
                txt_5.Text = MySerialPort.Handshake.ToString();
    }
}

它的输出将是这样的。 Output1

然后我只修改文本框值,例如 7200,7,Odd,2&硬件。如果单击“更新”按钮,这些值应在我的系统中更改(下图)。 enter image description here

最后,我想在单击更新按钮后按文本框值更改端口设置。我应该怎么做。

1 个答案:

答案 0 :(得分:2)

这些设置存储在注册表中

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports

值以逗号分隔的字符串形式存储在单个键中。

你可以使用这样的东西:

阅读

            Microsoft.Win32.RegistryKey myKey = 
                Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports", true);
            string settings = myKey.GetValue("COM3:");

            Microsoft.Win32.RegistryKey myKey = 
                Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports", true);
            myKey.SetValue("COM3:", "9600,n,8,1");

但是,不是编写硬编码的"9600,n,8,1"值,而是在文本框中根据用户提供的值构造一个值。