Ⅰ 怎样用vc通过USB接口读取数据,该如何解决
我觉得过程挺对的阿,一般都需要设备驱动提供API函数,或者基于一定的架构开发的接口函数才能访问设备读取数据,比如BDA或者AVStream设备。
“读数据之前要给接受变量分配足够的内存空间否则会接受不到数据”,有些问题,因为有些USB设备驱动会做缓冲,如果都取速度慢的话,会有数据丢失,但应该可以接收到数据。
不知道你用的是什么类型的设备?
Ⅱ 如何用VC编写实现USB设备的读写操作
USB是一种支持在USB主机和USB设备之间进行串行数据传输的通信协议。主机作为总线的主叫方,采用两种信令模式:全速模式12Mb/s和低速模式1.5Mb/s。USB使用四种数据传输方式:控制传输(control)、中断传输(interrupt)、批量传输(bulk)及等时...
Ⅲ 用VC 实现USB通信
我来说下我做过的USB通信,我没有做过DSP跟上位机的通信,我只做过ARM类的STM32跟上位机的数据传递,虽然做过但是也不是很 懂,只是略知一二,我来说说我怎么做的吧,我是这么实现的:
USB是个很复杂的协议,你如果完全搞懂,我估计没有几个月专心钻研是不行的,但是如果只是能实现你的这个功能,我估计不是很复杂。
首先来说说USB通信:
USB通信传输方式分为四种:控制,中断,批量,同步传输四种,这个你可以看看网上资料,然后我用STM32通信,因为数据量不是很大,我用的是中断传输方式,但是DSP数据量应该会比较大,不知道中断传输行不行,但是一般问题不大。
传输方式说完了,再说说USB设备类型,你每次插usb设备到电脑上的时候就会有提示,这是一个什么设备,USB设备类型就是说的这个意思,是鼠标还是键盘还是别的什么的,如果你选用标准的类,你就不用自己写上位机(PC)的驱动程序,但是如果不用标准的类,就是用自定义的类就要自己写上层的设备驱动程序,就是所谓的DDK,WDM,WDF什么的,你没写过这方面的还真有点棘手,但是也不一定要写驱动程序,你可以试试有个类叫HID类,这个类在USB通信的时候用的还挺多的,不过这个类也有缺点,这个地方还要说一点,USB还分低速,全速,高速三种,不太了解DSP,不知道他支持什么模式,但是USB2.0的全速应该至少可以支持的。
USB2.0全速模式HID用中断方式每秒最多可以传输64KB的数据,不知道能不能达到你的要求,但是我估计一般问题不大了,如果你这歀DSP能支持高速模式,每秒用这种方式可以传输高达22MB的数据,这个速度一般问题不大了。
你可以照着我说的思路,去网上搜搜人家写好的程序,肯定有人做过DSP的USB通信,然后你按照自己的要求改一改,主要应该是USB的设备描述符部分要自己修改,然后可能还要根据自己的电路改改配置什么的,上位机软件网上有源代码的多的是,然后自己摸索摸索,我估计你要是编程水平还可以的话,只是摸索USB,一两个星期完全没有问题,祝你好运!
Ⅳ 各位大侠,在vc++下如何编程控制USB口,即通过USB口收发数据
publicstaticStringreverse1(Stringstr)
{
returnnewStringBuffer(str).reverse().toString();
}
2.最常用的方法:
publicstaticStringreverse3(Strings)
{
char[]array=s.toCharArray();
Stringreverse="";//注意这是空串,不是null
for(inti=array.length-1;i>=0;i--)
reverse+=array[i];
returnreverse;
}
3.常用方法的变形:
publicstaticStringreverse2(Strings)
{
intlength=s.length();
Stringreverse="";//注意这是空串,不是null
for(inti=0;i<length;i++)
reverse=s.charAt(i)+reverse;//在字符串前面连接,而非常见的后面
returnreverse;
}
4.C语言中常用的方法:
publicstaticStringreverse5(Stringorig)
{
char[]s=orig.toCharArray();
intn=s.length-1;
inthalfLength=n/2;
for(inti=0;i<=halfLength;i++){
chartemp=s[i];
s[i]=s[n-i];
s[n-i]=temp;
}
returnnewString(s);//知道char数组和String相互转化
}
Ⅳ 如何用VC++编写USB通信程序
你要首先知道要控制的USB设备的USB控制芯片的型号,根据USB控制芯片确定控制USB设备的驱动程序,然后找相关的USB控制芯片型号的资料,资料里面应该包括关于驱动程序的开发接口,知道开发接口后再使用VC引入,调用。
Ⅵ 用vc++实现usb接口通信编程的一般步骤
我来说下我做过的USB通信,我没有做过DSP跟上位机的通信,我只做过ARM类的STM32跟上位机的数据传递,虽然做过但是也不是很 懂,只是略知一二,我来说说我怎么做的吧,我是这么实现的:
USB是个很复杂的协议,你如果完全搞懂,我估计没有几个月专心钻研是不行的,但是如果只是能实现你的这个功能,我估计不是很复杂。
首先来说说USB通信:
USB通信传输方式分为四种:控制,中断,批量,同步传输四种,这个你可以看看网上资料,然后我用STM32通信,因为数据量不是很大,我用的是中断传输方式,但是DSP数据量应该会比较大,不知道中断传输行不行,但是一般问题不大。
传输方式说完了,再说说USB设备类型,你每次插usb设备到电脑上的时候就会有提示,这是一个什么设备,USB设备类型就是说的这个意思,是鼠标还是键盘还是别的什么的,如果你选用标准的类,你就不用自己写上位机(PC)的驱动程序,但是如果不用标准的类,就是用自定义的类就要自己写上层的设备驱动程序,就是所谓的DDK,WDM,WDF什么的,你没写过这方面的还真有点棘手,但是也不一定要写驱动程序,你可以试试有个类叫HID类,这个类在USB通信的时候用的还挺多的,不过这个类也有缺点,这个地方还要说一点,USB还分低速,全速,高速三种,不太了解DSP,不知道他支持什么模式,但是USB2.0的全速应该至少可以支持的。
USB2.0全速模式HID用中断方式每秒最多可以传输64KB的数据,不知道能不能达到你的要求,但是我估计一般问题不大了,如果你这歀DSP能支持高速模式,每秒用这种方式可以传输高达22MB的数据,这个速度一般问题不大了。
你可以照着我说的思路,去网上搜搜人家写好的程序,肯定有人做过DSP的USB通信,然后你按照自己的要求改一改,主要应该是USB的设备描述符部分要自己修改,然后可能还要根据自己的电路改改配置什么的,上位机软件网上有源代码的多的是,然后自己摸索摸索,我估计你要是编程水平还可以的话,只是摸索USB,一两个星期完全没有问题,祝你好运!
Ⅶ USB设备已装驱动,且知道其VID,PID,VC该怎么编程实现数据传送
看看具体是什么USB类的设备,通过MDK,DDK或SDK中的设备管理器族函数枚举设备的VID和PID,寻找到vid和pid就可以通过相关函数得到这个设备的符号名,然后通过相关函数比如openfile得到设备文件的读写句柄来通过驱动定义的函数或readfile和writefie来读写数据。
Ⅷ vc++实现控制USB设备启用与否
XP下可以使用注册表来实现,但 win7 及以上就无效了,此时可以使用重命名 USB 驱动的方式来进行,参考代码如下
BeginWaitCursor();
//1修改注册表
DWORDdwState=0x00000004;
LONGlStatus=SHSetValue(
HKEY_LOCAL_MACHINE,
_T("SYSTEM\CurrentControlSet\Services\USBSTOR"),
_T("Start"),
REG_DWORD,
&dwState,
sizeof(DWORD)
);
if(lStatus==ERROR_SUCCESS){
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,0,0);
}
else
{
m_msg=_T("注册表更新失败,请尝试右键[使用管理员权限]启动");
UpdateData(FALSE);
EndWaitCursor();
return;
}
//2重命名文件
TCHARszTempPath[MAX_PATH];
CString_WindowsDir;
::GetWindowsDirectory(szTempPath,MAX_PATH);
_WindowsDir=CString(szTempPath);
if(_WindowsDir.GetAt(_WindowsDir.GetLength()-1)!=_T('\'))
_WindowsDir+=_T('\');
TCHARszFrom[MAX_PATH]={0},szTo[MAX_PATH]={0};
_tcscpy(szFrom,szTempPath);
_tcscat(szFrom,_T("\inf\usbstor.inf"));
_tcscpy(szTo,szTempPath);
_tcscat(szTo,_T("\inf\usbstor.inf.disabled"));
SHFILEOPSTRUCTFileOp;
FileOp.hwnd=NULL;
FileOp.wFunc=FO_RENAME;
FileOp.pFrom=szFrom;
FileOp.pTo=szTo;
FileOp.fFlags=FOF_SILENT;
if(SHFileOperation(&FileOp)!=0)
{
m_msg=_T("重命名USB驱动文件失败");
UpdateData(FALSE);
EndWaitCursor();
return;
}
_tcscpy(szFrom,szTempPath);
_tcscat(szFrom,_T("\inf\usbstor.pnf"));
_tcscpy(szTo,szTempPath);
_tcscat(szTo,_T("\inf\usbstor.pnf.disabled"));
FileOp.hwnd=NULL;
FileOp.wFunc=FO_RENAME;
FileOp.pFrom=szFrom;
FileOp.pTo=szTo;
FileOp.fFlags=FOF_SILENT;
if(SHFileOperation(&FileOp)!=0)
{
m_msg=_T("重命名USB驱动文件失败");
UpdateData(FALSE);
EndWaitCursor();
return;
}
if(RestartExplorer())
m_msg=_T("USB存储设备已经被禁止使用!");
else
m_msg=_T("重启Explorer失败,请尝试手工Ctrl+Alt+Del在任务管理器后新建explorer任务");
UpdateData(FALSE);
EndWaitCursor();
Ⅸ 如何使用VC实现USB通讯
电脑迷你USB蓝牙2.0适配器 免驱动 可以在拍拍 里去找下 看 !全世界最小 V2.0版本+EDR高速 免驱动 蓝牙适配器
http://dx.anxz.com/www.anxz.com/IVT_BlueSoleil.rar 下载驱动详细说明: 支持多蓝牙设备连接
CSR蕊片 全免驱动 真正内置陶瓷天线 闪绿色光
实现电脑与其他蓝牙协议设备(蓝牙耳机/鼠标/键盘/数码相机/传真机/打印机等)的无线连接进行音频、数据、图像的传输,另外可组建个人局域网实现数据的共享及无线上网。
其他功能:蓝牙拨号网络服务、蓝牙串行端口服务、蓝牙信息同步服务。 产品简介:
* 蓝牙标准V2.0+EDR
* 支持蓝牙CLASS 1/2/3
* USB接口:USB2.0标准,向下兼容1.0/1.1标准
* 操作频带在 2.4GHz 至 2.483GHz 之间,采用 FHSS (跳频展频) 技术
* 开放空间下的操作范围约为20米
* 直觉式的软件操作接口,无须繁杂的设定
* 适用于 Windows 98SE/ME/2000/XP/2003/VISTA或 Mac OS X 10.2.6以上之操作系统
*在WindowsXP SP2/VISTA下可不驱动,方便携带!
* 数据传输率最高可达3Mbps产品特点
* 灵敏度 < -85 dBM
*安全性:内置密码及使用者授权
*电源:USB接口直接供电
* PC/Mac:蓝牙无线拨号上网 (需蓝芽手机等装置配合)
* PC:蓝牙无线局域网络,可同时让八台配有蓝牙装置的计算机自成一小型无线网络,也可通过此功能透过蓝牙无线基地台或插有蓝牙连结器的计算机来上网(被连结的基地台或计算机必须已经连上因特网)
* PC:蓝牙无线传真 (计算机需安装有传真软件)
* PC/Mac:蓝牙无线档案传输
* PC/Mac:蓝牙无线数据同步化
* PC:支持蓝牙虚拟串行端口
* PC:支持蓝牙无线打印
* PC:支援蓝牙耳机
* PC/Mac:支持蓝牙人因接口(蓝牙鼠标及蓝牙键盘)
驱动方式:这款蓝牙有2种方式可选,“全免驱动”(不用事先安装) XP/Vista下即插即用-直接调用系统自带蓝牙驱动。提醒:使用系统驱动只能传输数据,不支持音频,因为微软的蓝牙驱动没有虚拟声卡功能,只有在安装了原厂配备的“IVT光盘驱动”后,蓝牙才能支持音频。光盘里是性能最稳定的合法授权“正版IVT2.7”完美支持Vista支持蓝牙立体声使用方法:
1.拿出随机所配光盘插入光驱,选择语言为中文并安装驱动
2.点击桌面刚安装的程序之后插入蓝牙适配器
3.手机蓝牙功能打开为自动
4.点电脑里的程序中间那个球按鼠标右键选搜索设备
5.点击搜索到的设备选配对(输入111,搜索到的设备也输入111).
6.点上面显示黄色的文件传输或对象交换可以传输了.
Ⅹ 我想用VC++6.0编写一个读取USB接口数据并进行实时显示的上位机程序,求具体的方法,要具体的越详细越好
下图为单片机P1口与8个LED灯的连接方法,为高电平亮低电平灭。 上位机对最佳答案的评论我想求一份EDA设计要求是:传感器与信号处理系统的设计、