c# - 几个小时后C#无法读取串口?
问题描述
我有一个从设备读取串口数据的项目,我的操作系统是 windows 10。我读过这个:
2.如果正在使用的 USB COM 端口已被移除,SerialPort.Close() 将冻结应用程序
但如果设备没有输入,我的代码可能只能工作 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);
});
}
解决方案
这可能是电源管理(或电源选项)设置的结果。您没有说明您正在使用哪个操作系统,或者您的设备是否通过 USB 连接。
赢10:
- 在开始图标旁边的搜索框中,键入:设备管理器
- 右键单击所需的设备
- 选择“属性”
- 如果“允许计算机关闭此设备以节省电源”选项退出,请取消选中它。单击确定。
您可能需要查看的其他设置是“电源选项”,可以在“控制面板”或“开始”图标旁边的搜索框中找到,键入:电源选项(然后单击“附加电源设置”)。既然你说它可以工作6个小时。您可以检查哪些设置设置为 6 小时(360 分钟)。
推荐阅读
- vb.net - 使用循环允许我在控制台应用程序中输入多个数字,然后进行计算
- centos - 如何在 Centos 8 上将 Clamd 作为服务运行
- shopify - 将 js 变量与 Shopify 液体标签一起使用
- python - argParse 的新手,不确定我的错误在哪里
- java - 如何使用哈希图计算成对数字的绝对差?
- html - 如何使用 HTML/CSS 和 Bootstrap 4 使视频适合网页背景?
- git - 删除 repo 1 的子文件夹以创建新的 repo 2 (bitbucket repos)
- java - 如何在 Spark Java 中创建复杂的 StructType Schema
- python - 我可以过滤 forms.ManyToManyField 中的对象以等于在另一个字段中选择的值吗?
- quarkus - 使用 JPA 存储库时如何解决 javax.enterprise.inject.IllegalProductException