问题标签 [com0com]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6716 浏览

linux - linux中有没有像COM0COM这样的程序?

我在windows中使用com0com进行程序测试,linux中是否有类似com0com的程序?

我知道有 pts/ptmx,但我想要的是一个独立的程序来提供 2 个虚拟串行端口......

然后我可以打开2个程序,每个参加一个......

0 投票
1 回答
3526 浏览

java - com0com RS232终端Java程序

我制作了一个在具有两个 RS-232 端口的计算机上运行的 Java 程序。

它工作得很好。我连接了两个通过 RS-232 相互通信的设备。我把电脑放在电缆之间。

您可以在终端窗口上看到发送的所有内容。

但是在随机时间后,一个设备停止响应查询。

通常设备 1 发送查询 1 并且设备响应。

但一段时间后,设备开始发送查询 2,设备 2 不再响应。

这是一个捕获:

  • 第一列:COM 端口号
  • 第二栏:字符的十进制表示
  • 第三栏:人物形象化

https://i77.photobucket.com/albums/j74/bertyhell/errors/capture.png?t=1281084570

为什么这不起作用?我计划将来使终端程序开源。

编辑:我没有发布任何代码,因为代码有效。它仅在 5 分钟 - 1 小时后停止工作。

这是连接代码:

这是接收器:

这是发件人之一:

0 投票
1 回答
2011 浏览

windows-xp - com0com 静默安装(测试签名的 com0com.sys 在资源管理器中显示为已登录,但在设备管理器中未显示)

我的目标是在 WinXP 和 Win2000 上安装 com0com 串行驱动程序而不弹出安装向导。

我正在使用 WinXP x86。我已按照 com0com 驱动程序的测试签名说明,在第 60 行将 amd64 替换为 i386。

我已使用以下命令将我的测试证书添加为 root 和trustedprovider:

并验证它在两个位置下都有列出。

然后我运行新建的 setup.exe。这会将签名的 com0com.sys 文件安装到 C:\WINDOWS\system32\DRIVERS 并设置一对虚拟串行端口和它们之间的总线。使用资源管理器,我转到 DRIVERS 目录,右键单击 com0com.sys 文件并验证它是否具有“测试”数字签名。然后我进入设备管理器,打开“com0com 串行端口模拟器”条目,选择一个条目并执行“属性”->“驱动程序”,看到它显示“未进行数字签名”。我单击驱动程序的详细信息,可以看到它指的是我刚刚确认已签名的 com0com.sys 驱动程序文件。

我发现可能是一个相关的问题,但我不确定。WinXP 是否需要 WHQL 签名?如果是这样,这是否解释了为什么 com0com.sys 文件已签名但设备驱动程序条目说它们未签名?

0 投票
1 回答
3521 浏览

c# - C#串口,模拟串口写

我有 ac# 应用程序,通过串行端口将 pc 连接到设备。

当我向设备发送数据时,如果设备发回数据,则会触发 datareceived 事件。

我想问这个。有没有办法模拟设备的数据发送?

我的意思是,我不仅想在设备发送数据时触发 datareceived 事件。

这可能吗?

0 投票
3 回答
13616 浏览

winapi - com0com 虚拟端口未找到

我已经在 64 位 Windows 7 机器上成功安装了 com0com v2.2.2.0。

我运行命令实用程序,如下所示:

注意:记录为“正在使用”不是错误消息吗?

然后我尝试像这样打开 COM8

这失败了

我已经尝试过“COM8”和"\\.\COM8".

请注意,对 CreateFileA 的完全相同的调用可以在“真实”COM 端口上完美运行。

问:谁能告诉我是什么问题?

答:在 Windows 7 64 位上,您必须启用对未签名驱动程序的测试。

  • 以管理员身份运行命令提示符。(仅从具有管理员权限的帐户运行是不够的。有关如何执行此操作的详细信息,请参见此处。)

  • 输入命令bcdedit -set TESTSIGNING ON

  • 重启。(Windows 会在桌面右下方放置“测试模式”注释)

对于 Windows 8,此方法不能令人满意或轻松地工作。以下是对问题和解决方法的一些讨论

或者,您可能想尝试签名版本- 我自己没有尝试过。

0 投票
3 回答
7157 浏览

c# - 在 C# 中创建一个批处理文件

这是我第一次创建批处理。基本上我想在命令 Promt 中写命令。所以我需要批处理文件,以便我可以在 c# 中使用它并完成任务。

命令如下所示:

我如何创建批处理文件并使用 c# 代码运行它。

谢谢

详细信息:我正在使用 com0com 创建虚拟端口,因此主要思想是自动化该过程,因此我可以创建端口而无需前往命令端口并编写命令。

0 投票
1 回答
1427 浏览

c# - 在 C# 中删除虚拟 COM 端口

我正在创建一个批处理文件以删除在使用 com0com 之前创建的虚拟 com 端口。在创建时,重命名的端口名称例如:

因此,当我想删除时,我应该使用原始名称,例如:

对应于原始端口名CNCA2

那么,我在这里要做的是,如果用户选择删除端口 COM20,如何获得原始名称CNCxx

以下是我使用的命令示例:在此处输入图像描述

如你所见,当我写remove COM150的时候没有变化,所以我需要得到相应的名称,即remove 2.

那么从 c# 应用程序中,我如何在不手动使用list命令的情况下获得相应的名称?

谢谢。

0 投票
1 回答
612 浏览

installation - 如何知道com0com端口安装完成?

我正在编写安装 com0com、创建多个 COM 端口并安装使用这些端口的应用程序的 InstallAware 脚本。

为了创建端口,我使用一些选项运行 setupc.exe install。Setupc 完成了它的工作并很快退出。之后,Windows 开始了漫长的过程,告诉用户找到了新设备以及他们是否要安装驱动程序等。

在安装过程结束时,用户会看到标准屏幕显示安装完成,您是否要运行该应用程序。我在 Windows 完成安装驱动程序之前就到了这一点,并且在完成之前无法继续。

我如何知道何时安装了所有驱动程序并创建了端口并且我可以使用它们?

我想写一个小应用程序,它会定期尝试打开我的端口。安装脚本将等到此应用退出,然后进入最终屏幕。

还有其他方法吗?我可以从 Windows 收到驱动程序安装完成的任何通知吗?

0 投票
1 回答
856 浏览

serial-port - com0com 拦截 opos 打印机 x 离线

我们正在尝试拦截 pos 和打印机之间的数据。

我们遇到的问题是当我们将打印机 x 连接到 com0com 端点时,POS 报告打印机 x 处于脱机状态。

com0com 端点两侧的超级终端实例确实相互通信。

我从来不知道有一种方法可以检测硬件是否实际连接到串行端口。通常,无论是否有设备在侦听,我都会写入 com 端口。我知道 pos 使用 opos,因为它是与打印机通信的基本方式。opos 触发什么事件以通知 pos 应用程序认为打印机离线?硬件如何识别设备是否已连接?使用 com0com 时是否有规避此事件的方法?

0 投票
2 回答
3861 浏览

c# - C# 打开虚拟串口抛出 ArgumentException

我有一个通过串行端口连接到设备的实用程序。为了测试这个应用程序,我正在为该设备编写一个模拟器。

这两个应用程序旨在在同一台 Windows 7 机器上运行。

我正在用 C# 编写模拟器。我使用 com0com 创建了一对虚拟端口(在本例中 - CNCA8 和 CNCB8,因为我已经有几个现有的端口对)。

我正在尝试在模拟器中打开 CNCB8(应用程序尚未运行),但出现异常:

System.dll 中出现“System.ArgumentException”类型的未处理异常

附加信息:给定的端口名称不以 COM/com 开头或不解析为有效的串行端口。

示例代码:

这个问题不相关,因为它是一个未使用的虚拟端口(如果重要,IsOpen 返回 false): C# SerialPort#Open() 方法由于端口名称而引发 ArgumentException?

编辑:我还确保端口名称出现在 SerialPort.GetPortNames() 中,并且它出现在“com0com 串行端口仿真器”下的 WIndows 设备管理器中。我还尝试使用 CNCA 而不是 B(具有几个不同的现有虚拟端口),尝试删除“HandShake”行并尝试将波特率更改为 115200,以防万一(尽管最终我需要 9600)。