多个程序共享同一串口数据的实现

本文介绍如何利用虚拟串口软件VSPD和serial_splitter实现一个物理串口数据向多个应用程序的共享。通过创建虚拟串口,使多个应用程序能够同时接收同一物理串口的数据。


        有过串口编程经验的人都知道,串口是独占方式使用的,即有且只有一个应用实例能对一个串口进行打开、读写操作。但实际应用中,我们可能要在多个应用程序中对来自同一个串口的数据进行分析。比如我们有一个GPS设备,用串口的方式将数据传到电脑上了,我们想在多个应用程序中使用这个GPS数据。利用虚拟串口(VSPD如图1)这款软件,可以虚拟出成对的串口。例如,物理串口为COM1,利用VSPD将另一个虚拟出的串口,如COM2和物理串口COM1配对,效果如图2所示。


图1 虚拟串口(VSPD)



图2 将物理串口和虚拟出来的串口配成对


经过这样的操作之后,由物理串口COM1发过来的数据,理论上可以在COM2口接收到(待验证)。但VSPD不支持将多对配对的虚拟串口同时连在一起,从而无法达到一个物理串口对多个虚拟串口的效果。这时我们可以用到另外一款很有用的软件,serial_splitter,这里用的v3.5破解版本,下载后(点击打开链接),若在win7下使用,请以管理员身份运行SSplitter.exe,否则找不到物理串口,笔者也是摸索了很久才成功,在此提醒一下大家。其界面如图3。serial splitter的功能比VSPD强大的多,不仅可以像VSPD那样,虚拟出配对的串口,还可以虚拟出单独的串口,可以虚拟出一对多、多对一的串口。下面简要介绍一下这款软件。


图3 serial splitter界面图

这里我们想要获取物理串口(如COM1)上的数据给多个应用程序使用,可以利用一个物理串口对应多个虚拟串口来实现。具体操作步骤如下:首先在上图空白区中的Serial Splitter上右键->选择Add buddle,这是出来了一个新的配对项New buddle,我们可以将其重命名为mybuddle,之后点击mybuddle前的“+”号,然后右键input->选择Add port->选择Add real serial port->选择真实存在的串口(如COM1)。到这里,数据源就设置好了,接下来设置数据输出端口。同理设置output,此时端口添加时,我们选择Add virtual serial port,这里添加几个虚拟的串口,如COM4、COM5、COM6、COM7……若虚拟串口本身不存在,则此操作会帮我们创建出虚拟的串口。

完成后的效果图如图4所示,完成了上述操作后,我们就可以不同的应用程序中分别打开虚拟的串口COM5、COM6、COM7……,读出来的数据当然也是来自于COM1接收的数据,就不用担心COM1被独占的困扰了。


使用方法 -------- 1. 点击ComfoolerySetup.exe安装Comfoolery 2. 配置Comfoolery,详见“菜单说明”一节 3. 通告串口服务器IP、端口号 4. 客户端telnet连接串口服务器 菜单说明 -------- * File,仅含退出选项,一般用不到 * Edit,含Com Settings和TCP Settings两个选项 ** Com Settings,配置要共享串口信息 *** Com Port #,待共享串口号 *** Baud Rate,波特率 *** Parity,一般选择“None” *** Data bits,一般选择“8” *** Stop bits,一般选择“1” *** Flow Control,一般选择“None” ** TCP Settings,配置共享服务器端口 *** Read-only port number,当客户端连接此端口号时,只能读串口输出的信息,不能对串口进行写操作 *** Read/write port number,当客户端连接此端口号时,不但能读串口输出的信息,还可对串口进行写操作 * Help,一般用不到 客户端连接说明 -------------- 使用telnet工具,按服务器的IP加共享的端口号即可连接。 注意使用时,需要为telnet工具配置“Force character at a time mode”,否则telnet工具敲回车会多回显一次本次输入,使用效果不佳。 * SecureCRT,右击标签,选择“Session Options”,点击左侧“Category”->“Connection”->"Telnet",在右侧勾选“Force character at a time mode”,保存退出。 * Linux命令行,"telnet 服务器IP 端口号",敲ctrl + ],执行mode character,就可以进入单字符模式("character at a time" mode)。 其他说明 -------- 打开多个Comfoolery实例可实现串口共享
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值