【问题标题】:C# can't read serial port after few hours?几个小时后C#无法读取串口?
【发布时间】:2020-11-24 02:23:57
【问题描述】:

我有一个从设备读取串口数据的项目,我的操作系统是 windows 10。我读过这个:

  1. C# Serial Port Check if Device is Connected

2。 SerialPort.Close() freezes application if the USB COM Port in use has been removed

但如果没有来自设备的输入,我的代码可能只能工作 6 小时。目前的解决方案是再次打开表单后关闭表单。

 SerialPort myPort = new SerialPort();
   private void Scanning_Load(object sender, EventArgs e)
    {
        myPort.BaudRate = 9600;
        myPort.PortName = "COM4";
        if (SerialPort.GetPortNames().ToList().Contains(comPortname))
        {
            if (!myPort.IsOpen)
            {
                myPort.Open();
            }
             myPort.DataReceived += getReceivedata;
        }
     }
    private  void getReceivedata(object sender,
                             SerialDataReceivedEventArgs e)
    {
        SerialPort spL = (SerialPort)sender;
        string data_rx = spL.ReadLine();
        this.Invoke((MethodInvoker)delegate
        {
         Console.Write(data_rx);
        });
    }

【问题讨论】:

    标签: c# serial-port interrupt interruption


    【解决方案1】:

    这可能是电源管理(或电源选项)设置的结果。您没有说明您使用的是哪个操作系统,或者您的设备是否通过 USB 连接。

    赢得 10:

    • 在“开始”图标旁边的搜索框中,输入:设备管理器
    • 右键单击所需的设备
    • 选择“属性”
    • 如果“允许计算机 关闭此设备以节省电源”选项退出,取消选中它。单击 好的。

    您可能需要查看的其他设置是“电源选项”,可以在“控制面板”或“开始”图标旁边的搜索框中找到,键入:电源选项(然后单击“附加电源设置”)。既然你说它可以工作6个小时。您可以检查哪些设置设置为 6 小时(360 分钟)。

    【讨论】:

    • 我使用的是 Windows 10,但我的设备是 arduino。没有在属性上设置电源管理。其实我的电源设置是从不。
    • 电源选项怎么样:USB 设置 => USB 选择性挂起设置?还要检查“硬盘”和“睡眠”的值。
    • 对于 USB 设置状态为已启用。
    • 尝试禁用 USB 选择性挂起设置。将“让计算机进入睡眠状态”更改为“从不”(或设置后睡眠 = 从不)。将“之后关闭硬盘”更改为“从不”。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    相关资源
    最近更新 更多