关于-vspd-中的几个模式

106

vspd 全称虚拟串口驱动,官方也没有给出很详细的文档,这里仅记录一些自己的理解

测试版本:vspd-v9.0,我主要用来创建虚拟串口以供测试使用

模式 Pairing

可成对得创建相互连通的虚拟 COM 口,仅能选择新的虚拟 COM 口进行创建,不能使用已存在的 COM 口

举例:
创建 COM100 与 COM101 作为 Pairing,使用串口工具打开两个 COM 口,可以互发数据

模式 Split

将一个真实 COM 串口 split 为多个虚拟 COM 口
在这种情况下,被 split 的真实 COM 口接收到的所有数据都会发送到每个 split 出来的虚拟 COM 口
反之亦然,即每个 split 出来的虚拟 COM 口接收到的所有数据,都会发送到真实 COM 口

注意,一旦设置生效,则被 split 的真实 COM 口将始终处于被占用状态,其他串口调试工具将无法再次打开它,split 出来的虚拟 COM 口则必须是新创建的,不能是已存在的 COM 口

举例:
电脑上存在一个真实 COM 口名为 COM1,将其在 Split 模式下拆分到新的 2 个虚拟 COM 口:COM100 和 COM101,当 COM1 (从外部)接收到数据时,COM100 和 COM101 也都能接收到同样的数据
反过来,当 COM100 或 COM101 接收到数据时,COM1 也将接收到同样的数据

注:
所以 COM100 和 COM101 都相当于是 COM1 的引用?
并发问题?

模式 Join

与 Split 相反的,可以将多个真实 COM 口合并为一个新的虚拟 COM 口
在这种情况下,所有真实 COM 口接收到的所有数据,都会被发送到虚拟 COM 口
反之亦然,即虚拟 COM 口收到数据时,每一个 join 了的真实 COM 口也都将收到一份数据

注意,一旦设置生效,则被 join 的真实 COM 口将始终处于被占用状态,其他串口调试工具将无法再次打开它们,join 出来的虚拟 COM 口则必须是新创建的,不能是已存在的 COM 口

举例:
电脑上存在两个真实 COM 口名为 COM1 和 COM2,将其在 Join 模式下,合并到一个新的虚拟 COM 口: COM100,当 COM1 或 COM2 收到数据时,COM100 将收到同样的数据
反过来,当 COM100 收到数据时,COM1 和 COM2 也将收到同样的数据

注:
所以 COM100 相当于同时是 COM1 和 COM2 的引用?
并发问题?

模式 Merge

此模式可以将真实 COM 口和新创建的虚拟 COM 口合并在一起(或仅合并多个真实 COM 口,亦或仅合并多个新创建的虚拟 COM 口),当它们中任意一个 COM 口收到数据时,其他 COM 口都将收到同样的数据。

注意,一旦设置生效,则被 merge 的真实 COM 口将始终处于被占用状态,其他串口调试工具将无法再次打开它们,参与 merge 的虚拟 COM 口必须是新创建的,不能是已存在的 COM 口

举例:
电脑上存在一个真实 COM 口名为 COM1,将其在 Merge 模式下与 2 个新虚拟 COM 口:COM100 和 COM101 进行合并,当 COM1 (从外部)接收到数据时,COM100 和 COM101 也都能接收到同样的数据
反过来,当 COM100 接收到数据时,COM1 和 COM101 也将接收到同样的数据,同样的,当 COM101 接收到数据时,COM1 和 COM100 也将接收到同样的数据

注:
所以 COM1 和 COM100 和 COM101 它们互为另外两方的引用?
并发问题?

模式 Switch

此模式用户将多个真实 COM 口捆绑在一个新创建的虚拟 COM 口上,但同一时刻,只会有一个真实 COM 口与虚拟 COM 口是连通的

这种情况下,应用程序则只与虚拟 COM 口交互数据,不需要了解虚拟 COM 口背后有哪些真实 COM 口,虚拟 COM 口将在被打开时,自动选择一个可用的真实 COM 口

注:
反向代理模式?
负载均衡模式?

模式 Redirect

重定向数据,可以将一个真实 COM 口(必须是真实的),与另一个真实或虚拟 COM 进行绑定,就像 Pairing 模式那样,但 Redirect 模式支持使用真实 COM 口

注意,一旦设置生效,被 Redirect 之后的真实 COM 口将一直处于被占用状态

模式 Share

默认情况下,一个 COM 口只能被 open 一次,即只能被一个应用程序占用,Share 模式可以将一个真实 COM 口设置为可共享的模式,让多个已设置的应用程序同时 open 它,还能设置应用程序的权限

模式 Complex

未能看懂