串行连接上的“忽略” DTR

问题描述

我正在开发.NET Core 3.0 Windows / Linux应用程序,该应用程序使用串行端口与多种类型的打印机(财务打印机)进行通信。它适用于多种设备,但是其中一种设备的驱动程序无法实现DTR功能

因此,如果我用C编写根本不设置DTR的代码,则该应用程序可以工作,但是如果我从.NET Core打开串行连接,则该框架会将DTR设置为false,然后发生错误:“设备set_DtrEnable方法中的“附加到系统的附件无法正常工作”。

有什么方法可以在.NET Core中打开串行端口,而无需保留该设置吗?关于如何解决此问题的任何想法?总是有一个一个小型C应用程序并通过它运行所有通信的破解/斜线方法,但这似乎就像使用a弹枪来寻找蚊子一样。

[edit:]设备具有内置的USB到串行适配器,这会导致问题。

解决方法

可以考虑采取以下措施。

  1. 通知设备供应商并更正设备驱动程序。

  2. 如果可以使用try catch捕获错误,并且在发生错误后继续使用其他功能,则该错误将被忽略。

  3. 不支持此类打印机/设备驱动程序。