linux 虚拟串口驱动应用中芯片驱动程序与芯片的作用各是什么?

基于CY7C68013芯片USB虚拟串口实现_论文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。
基于CY7C68013芯片USB虚拟串口实现
||文档简介
中国最大最早的专业内容网站|
总评分0.0|
&&文​中​以​实​际​需​求​为​背​景​,​结​合​U​S​B​数​据​传​输​的​高​效​性​,​实​现​了​一​种​基​于​U​S​B​总​线​的​虚​拟​串​口​系​统​。​该​系​统​以​C​YC81芯​片​作​为​U​S​B​处​理​芯​片​,​采​用​U​S​B​协​议​规​定​的​标​准​子​类​通​信​设​备​类​,​通​过​U​S​B​总​线​在​物​理​层​为​主​机​提​供​一​个​虚​拟​串​口​。​在​硬​件​上​设​计​了​系​统​硬​件​连​接​电​路​,​软​件​上​实​现​了​U​S​B​固​件​程​序​,​并​给​出​了​U​S​B​虚​拟​串​口​和​普​通​串​口​以​及​U​S​B​转​串​口​器​件​的​数​据​传​输​速​率​。​经​过​测​试​,​该​U​S​B​虚​拟​串​口​系​统​传
试读已结束,如果需要继续阅读或下载,敬请购买
你可能喜欢下次自动登录
现在的位置:
& 综合 & 正文
从VSPD虚拟COM口安装包解出独立的驱动安装包(虚拟串口开发和EXE程序反解压)
虚拟串口VSPD的使用方法
最近在开发项目进行测试时,每次都要架设实体机器,很不方便,于是就想着可不可以写一个虚拟的机器,便于测试。我们项目与机器的通信方式是基于COM口的,于是要做虚拟机器,首先要解决的问题是创建虚拟的COM口。
网上搜索一番,主要有VSPM和VSPD,前者是在WIN7前使用稳定,后者在WIN7中使用稳定。我的电脑是WIN7_64的,所以选用了VSPD7。于是下了个VSPD7.1的安装包,安装完成后,利用软件界面就可以创建相应的虚拟COM口了。具体如何使用,可以参看这篇文章《》。记住一点,VSPD的COM通信是成对的,一个用于接收数据,一个用于发送数据。
有了虚拟COM口后,就是写一个DEMO进行测试。具体可以参看这篇文件章《》。
当虚拟COM口可以实现通讯之后,就想着我们的是依赖于这个VSPD安装包的,那如果我们是否可以不依赖呢?有两种方案:
方案一:自己写一个虚拟COM的驱动,然后里面实现。有兴趣的可以参看该文《》。
方案二:VSPD安装包是一个安装程序,为了实现虚拟COM,必然会有相应的驱动。如果我们能够找到这个驱动并安装,之后用相应的接口来调用,或是可行。
方案一想了,但自认还没有这个能耐,于是果断放弃,退而选方案二。那么方案二要实现,首先要解决的问题是接口的调用,因为驱动程序即使不能做到自己安装,但还是可以通过VSPD安装包的安装来解决,那么VSPD中有没有提供这样的接口呢?
查看VSPD的用户手册(User Manual),里面果然有相应的接口(在Using serial port driver in your program下的Functions中),于是有C#写了相应的调用,下面是。
using System.Collections.G
using System.L
using System.T
using System.Runtime.InteropS
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 extern bool CreatePair(string comName1, string comName2);
/// &summary&
/// DeletePair deletes a pair of virtual serial ports with a given name.
/// As input it takes name of any virtual serial port in a pair.
/// For example, if you want to remove pair named "COM5"-"COM6",
/// you can pass either "COM5" or "COM6" as argument to DeletePair function.
/// &/summary&
/// &param name="comName"&
A null-terminated string that defines one of the two port names in a pair you want to delete &/param&
/// &returns&DeletePair returns TRUE if virtual serial pair was successfully deleted and FALSE otherwise&/returns&
[DllImport("vspdctl.dll")]
public static extern bool DeletePair(string comName);
/// &summary&
/// DeleteAll deletes all virtual serial ports currently present in a system. It accepts no arguments at input.
/// &/summary&
/// &returns&DeleteAll returns TRUE if all virtual serial pairs were successfully deleted and FALSE otherwise&/returns&
[DllImport("vspdctl.dll")]
public static extern bool DeleteAll();
[DllImport("vspdctl.dll")]
public static extern bool SetStrictBaudrateName(string comName, bool isStrictBaudrate);
[DllImport("vspdctl.dll")]
public static extern bool SetStrictBaudrateHandle(IntPtr handle, bool isStrictBaudrate);
/// &summary&
/// SetStrictBaudrate enables/disables full baudrate emulation,
/// needs the name of one of the paired virtual ports and boolean parameter
/// that defines if strict baudrate emulation should be enabled or not.
/// &/summary&
/// &param name="comName"&A null-terminated string that defines one of the two port names in a pair &/param&
/// &param name="isStrictBaudrate"&A boolean variable which should be TRUE
/// if you want to enable strict baudrate emulation and FALSE if you want to disable it&/param&
/// &returns&SetStrictBaudrate returns TRUE if strict baudrate emulation was successfully enabled and FALSE otherwise&/returns&
[DllImport("vspdctl.dll")]
public static extern bool SetStrictBaudrate(string comName, bool isStrictBaudrate);
/// &summary&
/// SetBreak enables/disables line break emulation in virtual serial ports.
/// &/summary&
/// &param name="comName"&A null-terminated string that defines one of the two port names in a pair&/param&
/// &param name="isBreak"& A boolean variable should be TRUE if you want to emulate connection break and FALSE if you want to re-establish it &/param&
/// &returns&SetBreak returns TRUE if line break emulation was successfully enabled and FALSE otherwise.&/returns&
[DllImport("vspdctl.dll")]
public static extern bool SetBreak(string comName, bool isBreak);
/// &summary&
/// QueryBus: QueryBus sends request to get complete information from the virtual serial bus installed by VSPD.
/// &/summary&
/// &param name="inBufferPtr"&A pointer to VSBUS_QUERY or VSBUS_QUERY_EX structures.
/// If you want to get information about all current virtual serial ports
/// then use VSBUS_QUERY structure
/// and if you want to get extended information
/// about single virtual serial pair then use VSBUS_QUERY_EX structure.&/param&
/// &param name="inBufferSize"&&/param&
/// &param name="outBufferPtr"&&/param&
/// &param name="outBufferSize"&A pointer to either PORT_INFORMATION or PORT_INFORMATION_EX structures list.
/// If you have used VSBUS_QUERY than you should get PORT_INFORMATION list
/// and if you used VSBUS_QUERY_EX then you should get PORT_INFORMATION_EX.&/param&
/// &returns&&/returns&
[DllImport("vspdctl.dll")]
public static extern bool QueryBus(IntPtr inBufferPtr, long inBufferSize, IntPtr outBufferPtr, long outBufferSize);
/// &summary&
/// SetWiring sets custom signal lines wiring (pinout).
/// &/summary&
/// &param name="comName"&A null-terminated string that defines one of the two port names in a pair &/param&
/// &param name="bufferPtr"&A pointer to VSERIAL_WIRING structure &/param&
/// &param name="bufferSize"&Size of Buffer parameter in bytes &/param&
/// &returns&SetWiring returns TRUE if signal lines wiring was created successfully and FALSE otherwise&/returns&
[DllImport("vspdctl.dll")]
public static extern bool SetWiring(string comName, IntPtr bufferPtr, long bufferSize);
/// &summary&
/// SetAccessList restricts access to created virtual serial ports for various applications.
/// &/summary&
/// &param name="comName"& A null-terminated string that defines one of the two port names in a pair &/param&
/// &param name="bufferPtr"&A pointer to PROGRAM_ACCESS array &/param&
/// &param name="bufferSize"&Size of Buffer parameter in bytes &/param&
/// &returns&SetAccessList returns TRUE if port access list was created successfully and FALSE otherwise&/returns&
[DllImport("vspdctl.dll")]
public static extern bool SetAccessList(string comName, IntPtr bufferPtr, long bufferSize);
//[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi,Pack=1)]
public struct _VSBUS_QUERY
/// &summary&
/// VSBUS_QUERY structure size
/// &/summary&
/// &summary&
/// Has QUERYTYPE_PORTS = 1 value. Can be extended in the future.
/// &/summary&
ulong QueryT
private const int MAX_PORTNAME_LEN = 6;
public struct _VSBUS_QUERY_EX
/// &summary&
/// VSBUS_QUERY_EX structure size
/// &/summary&
/// &summary&
/// 1:query all virtual ports.
/// 2:query particular virtual pair
/// 3:query par name of the application, which created the port, is returned.
/// &/summary&
ulong QueryT
/// &summary&
/// Unicode name of any port in the pair you want to delete.
/// For instance, if "COM6-COM7" virtual serial ports pair was created,
/// then to remove it, PortName's value should be COM6 or COM7.
/// &/summary&
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PORTNAME_LEN)]
string PortN
代码中用到的结构只写了一部分,如果需要用到更多的结构的,可以参看VSPD的使用手册,然后自行改造。
在这些接口中我要用的只是创建和册除虚拟COM口,所以只要用到CreatePair、DeletePair和DeleteAll,下面是对这三个接口调用的示例代码。
VSPD.CreatePair("COM101", "COM201");
VSPD.DeletePair("COM101");
VSPD.DeleteAll();
使用COM101和COM201,是为了更方便从名字上看出他们是一对的。
有了这些之后,那么自己增删虚拟COM口已经可以实现了。那么还剩下另一个问题,就是能不能从VSPD的安装包中解出相应的驱动程序。
经过一番试验后,找到了一种方法,具体步骤如下
1.使用常用的解压缩工具尝试解压vspd.exe,见图1
2.查看清单文件,找到该EXE打包所用的工具,见图2
在vspd/.rsrc/MANIFEST下用UE打开文件1,然后查看打包用的工具是Inno.Setup.
3.查找Inno打包的EXE的反解压工具。
经网上搜索后,找到了innounp.exe。
4.使用innounp.exe反解压vspd.exe。见图3.
5.查看安装脚本install_script.iss
打开安装脚本后,会看到Files下的Source指向了一系列的文件,而驱动程序是以sys为后缀的,所以我们关心的是sys的文件和其所在的文件夹,我们可以看到sys所在的文件夹里面有evsbc7.inf、evsbc7.sys、evserial7.cat、evserial7.inf、evserial7.sys、vsbsetup.exe这些文件。
其中两个文件特别要注意,一个是evserial7.inf,一个是vsbsetup.exe。inf是一种安装文件,右击点击该文件可以看到有安装的字样,有的系统可以安装(如XP),有的系统不一定能安装(如win7_64)。另一个exe文件,是执行文件,但不确定是不是驱动程序的安装执行文件。
6.测试安装脚本
尝试执行evsbc7.inf安装后,有时可以成功,有时不能成功,看来这个文件不太可靠,具体要视系统而定。那我们尝试使用vsbsetup.exe安装(最好是用CMD来执行安装,这样可以看到异常和安装结果),安装时会需要几秒至几十秒不等(CMD安装时,会等一段时间,但安装完成后不会有其他提示),安装完成后,用前面的demo创建虚拟com口,在电脑的设备管理器中的可以看到com口的数量增加了。这么说这个exe执行文件就是安装驱动的程序。
至此,驱动程序已经从vspd.exe中解出来了,不过还需要注意一点,就是版本与系统的对应。
NT5对应XP_32
NT5x64对应XP_64
NT6对应WIN7_32
NT6x64对应WIN7_64
7.自行打包
有了驱动程序的安装脚本,那么要合并到自己的程序中,只是打包的问题了,这个有很多打包工具可以实现。
转载请注明出处
&&&&推荐文章:
【上篇】【下篇】Proteus中的虚拟终端和串口调试助手是相同的作用吗,各自的作用是什么?谢谢
Proteus中的虚拟终端和串口调试助手是相同的作用吗,各自的作用是什么?谢谢
作用是相同,只不过一个是虚拟的一个是可以通过硬件进行调试,也可以用软件进行模拟,都是串口调试用
//www, 是Proteus中的 一些虚拟 仪器 等,更多 请看.go-gddq,如 示波器 电压表 电流表 等等:///html/s693/916。串口调试助手 是 PC 端的一个 串口调试软件Proteus中的虚拟终端
虚拟终端是用软件的方式模拟串行接口,串口调试助手是软件,需要串口,软件虚拟的或硬件的都可以。不过,象Proteus的虚拟终端,基本上是摆设。真要调试通信,还是用硬件的吧,没带串口的,几十元买条USB转串口线,都解决。
版式: | 炫彩版 | 05-03 00:23软件介绍:虚拟串口驱动程序Virtual Serial Port Driver,VSPD是Virtual Serial Port Driver的简写,是一款虚拟串口驱动,安装后可以在你的电脑上虚拟任何你想要的串口端口号,最多能够虚拟COM254个串口。虚拟后的串口实时生效,你从设备管理器的端口(COM和LPT)中可以查看到前缀名为ELTIMA Virtual Serial Port(COMXX)的串口号。
提示:安装好英文版后先不要运行,把“补丁文件夹里的文件覆盖到软件的安装目录,即为中文注册版。
下载地址:
如果您发现该软件不能下载,为了保证您快速的下载,推荐使用[网际快车]等专业工具下载. 为确保所下软件能正常使用,请使用[WinRAR v3.8]或以上版本解压本站软件.站内软件都是由网上收集,只供网友学习使用,如果所收集的软件侵犯了您的版权,请告知。led驱动电源的芯片能起到什么样的作用?什么功能?_百度知道
led驱动电源的芯片能起到什么样的作用?什么功能?
由于LED属于电流器件,需要能提供稳定电流的电源为之供电。LED驱动电源就是根据LED的特性设计的恒流电源。除此之外LED驱动源还能调节输出电流的大小,从而实现改变LED亮度
其他类似问题
为您推荐:
ED显示阵列、电源四个大的部分。
其中出现问题比较多的地方有:
1.接口问题。现象:计算机信息无法显示,检查电缆
2.电源问题。LED显示使用的是低压大电流电源,与普通直流电源区别不大
3.驱动问题。每个行或者列都没有显示,那就是对应驱动电路(芯片)问题,更换即可
4.显示问题。长期使用LED显示屏可能会损坏老化,维修更换即可。
LED显示屏常见故障处理流程-诊断流程:
1、确定您的显示屏是同步显示屏还是异步显示屏; 同步显示屏的显示依赖显示器的设置,异步显示屏不依赖显示器设置;
2、确定您的显示屏是局部的显示问题还是整屏显示均有问题;
局部显示不正常可排除通讯方面的问题,一般可确定是显示屏硬件出现故障,您应该立刻和我们联系,以防故障扩大;
整屏显示不正常可能...
您可能关注的推广
led驱动电源的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 usb虚拟串口驱动下载 的文章

 

随机推荐