簡體   English   中英

自動調整C#中的COM串行端口

[英]Automatically adjust COM serial port in C#

我已經用Arduino Nano控制連接到PC並通過C#控制的直流電動機。 唯一的問題是,此刻它現在可以在我的計算機上運行,​​如果我將其連接到另一台PC,除非它使用相同的串行端口,否則它將無法工作。 這就是為什么我要COM端口“自行設置”。 有可能嗎? 如果沒有,我想制作另一個表格只是為了輸入COM端口號,但是如果可能的話,我想避免這種情況。 先感謝您。 這是我的代碼:

public partial class Form1 : Form
{
    String s = "0";
    string brojPorta = "COM5";
    int vrijednost = 0;
    System.IO.Ports.SerialPort serialPort1;
    public Form1()
    {
        InitializeComponent();
        System.ComponentModel.IContainer components =
    new System.ComponentModel.Container();
        serialPort1 = new System.IO.Ports.SerialPort(components);
        serialPort1.PortName = brojPorta;
        serialPort1.BaudRate = 9600;
        serialPort1.Open();
    }
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (serialPort1.IsOpen) serialPort1.Close();
    }

    private void Klizac1_Scroll(object sender, ScrollEventArgs e)
    {
        vrijednost = Klizac1.Value;
        s = (vrijednost * 10.24).ToString();
        serialPort1.Write(s + '\n');
        label1.Text = ((vrijednost-50)*2).ToString()+"%";
    }

    private void btn_Zaustavi_Click(object sender, EventArgs e)
    {
        Klizac1.Value = 50;
        label1.Text = "0";
        s = (Klizac1.Value * 10.24).ToString();
        serialPort1.Write(s + '\n');
    }
}

首先,您必須枚舉所有端口。 看到這個問題: 如何找到可用的COM端口?

然后,您將不得不嘗試在每個端口上連接超時,直到找到為止。

更為謹慎的情況是在下拉列表中枚舉可用端口,並讓用戶選擇其連接的端口。

這里可能會有一些陷阱,但是此示例似乎有效:

/*Use the WMI to search for the Arduino device on a serial port driver
and assign the serial port to the device*/

ManagementObjectSearcher SerialPortSearcher =
    new ManagementObjectSearcher(
    "root\\CIMV2",
    "SELECT * FROM Win32_SerialPort");

foreach (ManagementObject SerialPortObject in SerialPortSearcher.Get())
{
    if (SerialPortObject["Description"].ToString() == "Arduino Mega 2560")
    {
        SerialPort _serialPort =
            new SerialPort(SerialPortObject["DeviceID"].ToString());
        break;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM