从VSPD虚拟COM口安装包解出独立的驱动安装包(虚拟串口开发和EXE程序反解压)

本文详细介绍了如何从VSPD虚拟COM口安装包中解出独立的驱动安装包,以便在虚拟机环境中进行串口通信测试。通过分析VSPD的安装过程,使用Inno Setup的反解压工具innounp.exe,提取安装脚本和驱动程序,并最终实现不依赖VSPD安装包创建和删除虚拟COM口。
摘要由CSDN通过智能技术生成

最近在开发项目进行测试时,每次都要架设实体机器,很不方便,于是就想着可不可以写一个虚拟的机器,便于测试。我们项目与机器的通信方式是基于COM口的,于是要做虚拟机器,首先要解决的问题是创建虚拟的COM口。

网上搜索一番,主要有VSPM和VSPD,前者是在WIN7前使用稳定,后者在WIN7中使用稳定。我的电脑是WIN7_64的,所以选用了VSPD7。于是下了个VSPD7.1的安装包,安装完成后,利用软件界面就可以创建相应的虚拟COM口了。具体如何使用,可以参看这篇文章《虚拟串口VSPD的使用方法》。记住一点,VSPD的COM通信是成对的,一个用于接收数据,一个用于发送数据。

有了虚拟COM口后,就是写一个DEMO进行测试。具体可以参看这篇文件章《win7系统下用vspd软件进行串口编程实例》。

当虚拟COM口可以实现通讯之后,就想着我们的程序是依赖于这个VSPD安装包的,那如果我们是否可以不依赖呢?有两种方案:

方案一:自己写一个虚拟COM的驱动,然后里面实现。有兴趣的可以参看该文《开发虚拟串口驱动程序》。

方案二:VSPD安装包是一个安装程序,为了实现虚拟COM,必然会有相应的驱动。如果我们能够找到这个驱动并安装,之后用相应的接口来调用,或是可行。

方案一想了,但自认还没有这个能耐,于是果断放弃,退而选方案二。那么方案二要实现,首先要解决的问题是接口的调用,因为驱动程序即使不能做到自己安装,但还是可以通过VSPD安装包的安装来解决,那么VSPD中有没有提供这样的接口呢?

查看VSPD的用户手册(User Manual),里面果然有相应的接口(在Using serial port driver in your program下的Functions中),于是有C#写了相应的调用,下面是代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Add
using System.Runtime.InteropServices;

namespace Anser.U2Simulator.Model
{
    public class VSPD
    {        
        //[DllImport("VSPDCTL.dll", EntryPoint = "CreatePair", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
        //public static extern bool CreatePair(byte[] comName1, byte[] comName2);  

        /// <summary>
        /// CreatePair creates a pair of virtual serial ports with given names. 
        /// It accepts two null-terminated strings determining which ports should be created as input. 
        /// For example, "COM5" and "COM6". 
        /// </summary>
        /// <param name="comName1">A null-terminated string that defines the name of the first port in a pair</param>
        /// <param name="comName2">A null-terminated string that defines the name of the second port in a pair</param>
        /// <returns>CreatePair returns TRUE if virtual serial pair was created successfully and FALSE otherwise</returns>
        [DllImport("vspdctl.dll")]
        public static
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
### 回答1: vspd虚拟串口无法删除可能是由于以下几个原因造成的: 1. 程序驱动冲突:在使用vspd虚拟串口的过程中,如果存在其他与串口相关的程序驱动冲突,可能导致无法删除虚拟串口。此时,可以尝试关闭其他串口相关程序或卸载冲突的驱动,然后再尝试删除虚拟串口。 2. 权限不足:如果当前用户没有足够的权限来删除虚拟串口,也会出现无法删除的情况。此时,可以尝试使用管理员权限运行相关操作,或者将当前用户添加到具有删除权限的用户组中。 3. 虚拟串口被占用:如果虚拟串口正在被其他程序占用,例如正在进行数据传输或被其他设备访问,也会导致无法删除。此时,需要确保虚拟串口没有被其他程序占用,可以尝试关闭相关程序、断开设备连接或重新启动计算机,然后再尝试删除虚拟串口。 4. 软件故障:有时候,vspd软件本身可能存在Bug或故障,导致无法正常删除虚拟串口。在这种情况下,可以尝试更新软件版本或者联系软件厂商寻求技术支持。 总结起来,无法删除vspd虚拟串口可能是由于程序驱动冲突、权限不足、虚拟串口被占用或软件故障等原因所导致。需要根据具体情况进行排查和解决,可以尝试关闭冲突程序、使用管理员权限、确保未被占用或更新软件版本等方法来解决该问题。 ### 回答2: vspdVirtual Serial Port Driver)是一种虚拟串口驱动程序,可用于在计算机上创建虚拟串口,方便与串口设备进行通信。然而,有时候我们可能会遇到无法删除vspd虚拟串口的情况。 这种情况可能有几种原因。首先,可能是由于vspd驱动程序没有正确安装或配置而导致无法删除虚拟串口。解决这个问题的方法是重新安装或重新配置vspd驱动程序。其次,可能是由于其他应用程序或进程正在使用虚拟串口,导致无法删除。在这种情况下,我们可以先关闭所有使用虚拟串口的应用程序或进程,然后再尝试删除虚拟串口。最后,可能是由于操作系统或vspd驱动程序的错误或故障导致无法删除。解决这个问题的方法可能需要升级操作系统或vspd驱动程序,或联系vspd官方支持寻求帮助。 一般情况下,通过重新安装、重新配置、关闭使用虚拟串口的应用程序或进程或升级操作系统或vspd驱动程序,我们应该可以解决无法删除vspd虚拟串口的问题。如果这些方法仍然无法解决问题,我们可以考虑联系vspd官方支持,向他们咨询并获得进一步的技术支持和解决方案。 ### 回答3: vspdVirtual Serial Port Driver)是一种虚拟串口驱动程序,它允许在计算机上创建虚拟串口,以模拟真实的串口设备。虚拟串口的使用对于软件开发和硬件测试等方面都非常重要。然而,出现无法删除vspd虚拟串口的情况时,可能有以下几个原因: 1. 软件冲突:可能是由于与其他串口设备驱动程序或软件产生冲突导致无法删除vspd虚拟串口。此时,可以尝试关闭相关软件或卸载其他串口驱动程序,并重新尝试删除虚拟串口。 2. 权限问题:在某些操作系统上,删除虚拟串口可能需要管理员权限。请确保以管理员身份登录系统,并尝试删除虚拟串口。 3. 未正确关闭虚拟串口:在删除虚拟串口之前,确保所有与该虚拟串口相关的程序或设备都已经关闭。如果存在未关闭的应用程序或其他设备正在使用虚拟串口,可能会导致删除失败。 4. 驱动程序问题:如果vspd驱动程序本身出现故障或损坏,也可能导致无法删除虚拟串口。此时,建议重新安装或更新vspd驱动程序,并重新尝试删除虚拟串口。 如果上述方法都无法解决问题,建议联系vspd的技术支持团队或开发者,获取更详细的帮助和支持,以解决无法删除vspd虚拟串口的问题。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值