【问题标题】:.NET Serial Port Woes. Converting C# Code to VB.NET 串行端口问题。将 C# 代码转换为 VB
【发布时间】:2011-06-14 18:49:21
【问题描述】:

我在数据记录几天时遇到了 SerialPort 功能间歇性崩溃的问题。这是一个很难调试的问题,我想尝试 Zach Saw 的修复,他谈到了 hereprovides code for in C#

我的问题是,要做到这一点,我是否需要在我的代码中重写串行端口的整个使用?

如果我使用 System.IO.Ports.SerialPort 模块,有没有办法只执行 SetCommState 的 DLLImport 以将 fAbortOnError 设置为 false,或者我需要完全放弃 SerialPort 模块并使用 kernel32 编写所有内容。 dll?

【问题讨论】:

  • 您使用的是 .Net 4.0 吗?我不知道该错误是否已修复,但许多其他错误已修复。 :)
  • .NET 4.0 仍然没有解决所有的串行问题。它在 XP 上是这样,但不是 Windows 7。

标签: vb.net c#-to-vb.net


【解决方案1】:

我很确定在这种情况下您可以将他的项目导入您的解决方案,它应该可以正常运行。由于 VB 和 C# 都是 CLR 语言,因此它们都可以编译为相同的中间语言。

【讨论】:

  • 谢谢。我将它添加到我的项目中,然后在 Visual Basic 中运行 SerialPortFixer.Execute("COM1")。它现在正在运行,但我知道它是否能解决我的问题还需要几天时间。
【解决方案2】:

看看这个页面

http://support.microsoft.com/kb/823179

它有正确的 SetCommState 声明,以及一些示例代码。 Zach 的解决方法是基本上先将 com 端口作为文件打开,调用 setcommstate,然后使用 .net 中的串行 io 函数。我没有尝试过,但他的帖子听起来你不应该对你的代码做太多的事情。

【讨论】:

    【解决方案3】:

    针对 .NET 中串行端口的各种问题测试了大约 15 种不同的解决方案,我决定使用CommStudio。从那以后它一直坚如磐石。

    您可以在此处获取 CommStudio Express(他们的免费版本):http://www.componentsource.com/products/commstudio/downloads.html?rv=42917

    【讨论】:

    • 谢谢!如果此修复不起作用,我一定会检查一下。
    • 我不得不承认,我从来没有使用 MS 系列相关的任何东西取得好的结果。我曾经做过的每一个使用串行端口的项目,我都只是为了一个体面的 3'rd 方库而突然出现,并且从未回头。对于一些私人的东西,我用过它,它总是以某种方式感到痛苦。那里有 100 美元左右的 COMM 库,而且大多数都有免费试用,所以如果你仍然有 .net 串行功能的问题,我肯定会考虑走这条路
    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多