问题描述
我正在开发.NET Core 3.0 Windows / Linux应用程序,该应用程序使用串行端口与多种类型的打印机(财务打印机)进行通信。它适用于多种设备,但是其中一种设备的驱动程序无法实现DTR功能。
因此,如果我用C编写根本不设置DTR的代码,则该应用程序可以工作,但是如果我从.NET Core打开串行连接,则该框架会将DTR设置为false,然后发生错误:“设备set_DtrEnable方法中的“附加到系统的附件无法正常工作”。
有什么方法可以在.NET Core中打开串行端口,而无需保留该设置吗?关于如何解决此问题的任何想法?总是有一个写一个小型C应用程序并通过它运行所有通信的破解/斜线方法,但这似乎就像使用a弹枪来寻找蚊子一样。
[edit:]设备具有内置的USB到串行适配器,这会导致问题。
解决方法
可以考虑采取以下措施。
-
通知设备供应商并更正设备驱动程序。
-
如果可以使用try catch捕获错误,并且在发生错误后继续使用其他功能,则该错误将被忽略。
-
不支持此类打印机/设备驱动程序。