C#电脑识别不到串口

我在电脑上运行程序的时候 发现读取不到串口,串口是正常的,用其他的工具就可以读到,我是电脑本身有问题吗

img

img


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolBar;

namespace danzijie
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                    button1.Text = "点击打开串口";
                }
                else
                {
                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.Open();
                    button1.Text = "点击关闭串口";
                }
            }
            catch (Exception ex)
            {
                //捕获可能发生的异常并进行处理

                //捕获到异常,创建一个新的对象,之前的不可以再用
                serialPort1 = new System.IO.Ports.SerialPort();
                //刷新COM口选项
                comboBox1.Items.Clear();
                comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
                //响铃并显示异常给用户
                System.Media.SystemSounds.Beep.Play();
                button1.Text = "打开串口";
                button1.BackColor = Color.ForestGreen;
                MessageBox.Show(ex.Message);
            }

        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;
            byte ReceiveData;
            ReceiveData = (byte)serialPort1.ReadByte();
            string str = Convert.ToString(ReceiveData, 16).ToUpper();
            StreamWriter sw = new StreamWriter(@"C:\Users\g'x'r\Desktop\jieshou.txt", true);//写入文件夹
            textBox1.Text = str;
            sw.Write(str);
            sw.Close();
        }
    }
}


https://download.csdn.net/download/z65443344/8251513?spm=1001.2014.3001.5503
先试试这个
有些硬件必须通过API才能找到,用自带的serialPort找不到
此外,你先确定没有其他程序占用端口才能打开,不要搞乌龙

(1)Prolific PL2303GC 的驱动 有点特殊,在WIN7,WIN10,WIN11 的系统上 驱动安装有些要求;不过 从截图上来看驱动应该是被安装且分配了COM11口了;可以考虑根据 WIN 系统版本 重新安装下驱动后 再测试下;
(2)C# 工程创建的时候 核对下 使用的 .Net 版本;理论上 SerialPort.GetPortNames() 在 .Net 4.0 之后 应该 问题不大;如果是 WIN10 系统的话 可以 用.Net 4.7.2 再测试下。
(3)可以尝试 调用系统API(DLL文件:advapi32.dll)读取注册表,并处理读取结果;

参考GPT和自己的思路:

首先,你需要确认电脑的串口驱动是否正确安装。其次,你可以尝试使用其他的串口工具测试串口是否正常工作,比如使用串口调试助手等。如果其他工具可以读取到串口数据,那么可能是程序代码的问题,可以检查代码是否正确配置了串口参数。另外,你可以在程序中添加一些调试信息来帮助定位问题,比如输出一些错误信息或者调试串口数据的时候添加一些日志。

参考GPT和自己的思路:

从您提供的代码中看,串口的相关操作似乎没有问题。因此,我认为可能是计算机本身的问题导致程序无法读取到串口。建议您可以尝试以下解决方案:

  1. 确认串口驱动程序是否正常安装,可以在设备管理器中查看串口设备是否正常,并检查驱动程序是否最新。

  2. 确认电脑中是否有其他程序占用了串口,导致程序无法读取到串口。建议您可以先关闭其他可能占用串口的程序再运行程序测试。

  3. 检查串口线、连接接头是否连接正确并且稳定。建议您可以更换一根串口线,或者连接其他设备测试串口是否正常。

希望以上建议能对解决您的问题有所帮助。