
在libusb的bin目录下有一个inf_wirzed.exe的文件,该文件是生成驱动所用,具体步骤可以网上百度,很是傻瓜式 *** 作,安装好驱动之后就可以使用其通讯函数了,
安装好驱动之后的情况如下
使用visual studio开发,将lib_msvc目录下的libusb.lib文件添加到工程目录并将lusb0_usb.h文件加入工程,如下
之后在MFC工程中如下 *** 作
OnInitDialog方法中调用usb_init函数,这是初始化函数库的,每个工程需要而且仅仅需要初始化一次.
查找系统中全部USB的方法如下
usb_find_busses()
usb_find_devices()//重新寻找设备
for (bus = usb_get_busses()busbus = bus->next)
{
for (dev = bus->devicesdevdev = dev->next)
{
usbCount++
deviceName.Empty()
handle = usb_open(dev)
usb_get_string_simple(handle,dev->descriptor.iProduct,nameBuffer,128)
usb_close(handle)
pidBuffer[usbCount-1] = dev->descriptor.idProduct//枚举所有设备
vidBuffer[usbCount-1] = dev->descriptor.idVendor
pvnBuffer[usbCount-1] = dev->descriptor.bcdDevice
deviceName.AppendFormat("%s",nameBuffer)
((CComboBox*)GetDlgItem(IDC_COMBO_USB_DEVICE_ENMU))->AddString(deviceName)
}
}
打开usb设备的方法如下
//现在遍历全部设备,找到对应PID vid的设备打开
usb_find_busses()
usb_find_devices()//重新寻找设备
for (bus = usb_get_busses()busbus = bus->next)
{
for (dev = bus->devicesdevdev = dev->next)
{
if(dev->descriptor.idProduct == myPid &&dev->descriptor.idVendor)
{
//PID VID相同
usb_handle = usb_open(dev)
}
}
}
发送数据的方法
char sendBuffer[64] = {0}
CString sendString
GetDlgItem(IDC_EDIT_USB_SEND_MESSAGE)->GetWindowText(sendString)
for(int i = 0i <64i++)
{
if(i >= sendString.GetLength())sendBuffer[i] = 0
else
{
sendBuffer[i] = sendString.GetAt(i)
}
}
usb_claim_interface(usb_handle, 0)//默认设备
usb_interrupt_write(usb_handle,0x01,sendBuffer,64,100)
usb_release_interface(usb_handle, 0)
接收数据的方法
char receiveBuffer[64] = {0}
CString receiveString
int recvCount = 0
usb_claim_interface(usb_handle, 0)//默认设备
recvCount = usb_interrupt_read(usb_handle,0x81,receiveBuffer,64,100)
usb_release_interface(usb_handle, 0)
if(recvCount >0)
{
GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->GetWindowText(receiveString)
for(int i = 0i <recvCounti++)
{
receiveString.AppendChar(receiveBuffer[i])
}
GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->SetWindowText(receiveString)
每次发送和接手之前需要调用usb_claim_interface将函数库和 *** 作系统关联起来
有了这些基本方法,通讯应该就不成问题了
详细代码见链接
http://download.csdn.net/detail/dengrengong/8523587
使用LIBUSB实现和自定义通讯设备通讯--MFC代码在末尾的更多相关文章
IOT设备通讯,MQTT物联网协议,MQTTnet
一.IOT设备的特性 硬件能力差(存储能力基本只有几MB,CPU频率低连使用HTTP请求都很奢侈) 系统千差万别(Brillo,mbedOS,RIOT等) 如使用电池供电,电量消耗敏感 如果是小设备, ...
厂商自定义USB设备固件程序及特性
通过前面的学习,大家应该对USB固件程序结构有了比较深的认识,现在再来详细说说固件里决定设备识别成厂商自定义USB设备的地方有哪些,或者说厂商自定义USB设备的固件特性有哪些. 之前不止一次说过学习U ...
厂商自定义USB设备类概述
USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且 *** 作系统中无须为每种设备提供 ...
JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...
Windows Phone:自定义字体在xaml和代码中使用
最近,我的小应用<认字>更新了一个能发声的版本,朋友对Speech做读音没有兴趣,反而对其中使用的楷体文字表示了兴趣,也许Speech的文章比较多,这次我对这个自定义字体在xaml和代码中 ...
C#自定义FTP访问类的代码
如下资料是关于C#自定义FTP访问类的代码,应该对各朋友有帮助. using Systemusing System.Collections.Genericusing System.Text...
springboot扫描自定义的servlet和filter代码详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 这几天使用spring boot编写公司一个应用,在编写了一个filter,用于指定编码的filter,如下: /** ...
设备通讯——RS232
RS232的接口有两种--一种公头.一种母头,两种头的引脚是有区别的 MAX232电路图: 注意:串口通讯需要交叉接线.
安卓MonkeyRunner源码分析之与Android设备通讯方式
如前文<谁动了我的截图?--Monkeyrunner takeSnapshot方法源码跟踪分析>所述,本文主要会尝试描述android的自动化测试框架MonkeyRunner究竟是如何和目 ...
随机推荐
织梦DEDECMS更新6月7日补丁后出现版权链接的删除办法
说最近网站底部多出了一个Power by DedeCms的超链接版权信息,但是该网友最近只是升级了0607更新补丁,其它的源代码并没有改动,而以前的文章页面并没有,看来是这次更新dedecms后才被加 ...
Converting between IEEE 754 and Float (Format related
The float can be converted to well known single-precision IEEE 754 number, why 754? It's the standar ...
HDU2199,HDU2899,HDU1969,HDU2141--(简单二分)
二分是一种很有效的减少时间开销的策略, 我觉得单列出二分专题有些不太合理, 二分应该作为一中优化方法来考虑 这几道题都是简单的使用了二分方法优化, 二分虽然看似很简单, 但一不注意就会犯错. 在写二分 ...
java 随机流
Example10_8.java import java.io.*public class Example10_8 { public static void main(String args[]) ...
List<Map>去重排序
数据格式 [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":" ...
MQ日常维护 *** 作手册
假设队列管理器为QMgrName,以下所有使用QMgrName的地方您都可以替换成您维护的mq队列管理器名称. 一.MQ的启动与停止 用root用户启/停需要root用户包含在mqm组中. 1.MQ的 ...
jquery控制audio的播放与暂停
<audio id="audio" src='music.mp3'></audio><script type="type/javascri ...
apt
今天单元测试看到巨长字符串被加了很多引号,想起以前可以用跳脱符断行,试了不行,google说java7可以,我 *** . https://github.com/benelog/multiline/wiki/ ...
C# 经典入门12章-使用泛型类型-2
关于jdk环境变量配置成了1.6.0_39 32位jdk 的路径 cmd中java -version却还是显示 64位或者其他jdk 路径的解决方法
其实是c盘或者其他盘的 jdk 安装的太多了,把其他的都卸载掉就行了
前言首先,这个教程在仅使用附带的光盘镜像文件里的资料的情况下,所搭建的嵌入式 ARM 开发环境可以满足 ARM 核为 ARM920T 及 CORTEX-A8 的嵌入式开发需求。
其次,搭建针对处理器为 ARM920T 的开发环境步骤如下:
WINDOWS 系统:
1、 用 WINRAR 或 7zip 打开镜像文件 Linux-dev.iso,将/WIN32/Daemon_Tools_4.46.1.328.exe 拖出来,
安装后运行;
2、 使用 Daemon 加载镜像文件 Linux-dev.iso 后,找到并双击/vmplayer/VMware-player-5.0.1-894247.exe 运行,安装完成;
3、 将/VMware-linux-tools.iso 复制到任何地方,譬如 D:\Virtual Machines\ 文件夹下;4、 将文件夹/Ubuntu 复制到电脑的任何地方,譬如 D:\Virtual Machines\ 文件夹下;
5、 打开 VMware Player,这是一个免费的软件,所以不需考虑不能使用的情况,更不需破解。效果图如下:
嵌入式开发环境的搭建
点击”Open a Virtual Machine”,找到刚才复制的 Ubuntu 文件夹,选中 Ubuntu.vmx 这个文件:
嵌入式开发环境的搭建
后点击打开;
6、 点击”Edit virtual machine settings”,这里需要注意的是,若你的电脑 CPU 是单核的,需将”Processors”由 2 设置为 1,否则,不能运行。选择”CD/DVD (IDE)”,之后点击右边的”Browse…”,找到并选择刚才复制的 VMware-linux-tools.iso,之后点击”Options”进入另一个设置界面;
7、 选择第三个”Shared Folders”,在右边将其设置为”Always enabled”,再点击下面的”Add…”,选择一个在硬盘上新建的空文件夹,譬如 D:\Virtual Machines\shared 文件夹,点击”Next》”,之后点击”Enable this share”,最后在设置主界面点击”OK”完成设置;
8、 将虚拟光驱加载的光盘中 Linux 文件夹中的所有文件都复制到上一步新建的空文件夹,譬如
D:\Virtual Machines\shared 文件夹下;
9、 在 VMware Player 下点击图标 以运行虚拟机 Linux,启动后可以看到桌面上有一个光盘的图标;
10、 在 Linux 桌面右键后选择”Open in terminal”,之后切换到/tmp 目录:cd /tmp ;11、 执行命令 tar zxf /media/cdrom0/VMwareTools-9.2.2-893683.tar.gz ,等待约一分钟后运行完毕;
12、 切换目录:cd 。/vmware-tools-distrib/ ;
13、 执行命令:sudo 。/vmare-install.pl ,用户”user”的密码为 redeem2012 ;
14、 下面出现很多问题,[yes]或[no],那么就可以一直点击键盘 ENTER 键选择默认设置,直至安装完成;15、 人,活着,要有耐心——这个过程稍长,显示最后两行为”Enjoy, --the WMware team”时就安装完成了;
16、 以上几个步骤如下:
嵌入式开发环境的搭建
17、 执行命令:sudo reboot 以重启;
18、 启动后在桌面右键选择”Open in terminal”,输入命令:cd /mnt/hgfs/shared ,当然若之前选择的空享空文件夹名称与 shared 不一样,可能不是这个目录,唉,管不了这么多了;19、 查看目当下文件如下:
嵌入式开发环境的搭建
20、 安装 libusb-1.0.9.tar.bz2,依次输入以下命令:tar jxf libusb-1.0.9.tar.bz2 、
cd libusb-1.0.9 、 。/configure --prefix=/usr 、 make 、 sudo make install ,注意最后一步需要输入密码 redeem2012,完了之后返回原目录: cd 。。/ ;21、 安装 readline-6.2.tar.gz,依次输入以下命令:tar zxf readline-6.2.tar.gz 、 cd readline-6.2 、。/configure --prefix=/usr 、 make 、 sudo make install ,完了之后返回原目录:cd 。。/ ;
22、 安装交叉编译器:sudo tar arm-linux-gcc-3.4.5.tar.bz2 -C /home ;
23、 更改环境变量:gedit /home/user/.profile ,在最后一行添加这么一句:export PATH=$PATH:/home/user/gcc-3.4.5-glibc-2.3.6/bin ,保存后退出
24、 切换回用户主目录:cd ~ ;
25、 执行命令:tar jxf /mnt/hgfs/shared/JLink_Linux_V422.tar.bz2 ;
26、 依次执行以下命令:cd JLink_Linux_V422/ 、 sudo cp libjlinkarm.so.* /usr/lib ,现在就可以
运行 JLink 了: sudo 。/JLinkExe ,但要注意这么一点:由于现在运行的是 windows 系统下的虚拟机, Linux *** 作系统无法访问到 JLink,那么就需要按下图所示选择将连接到电脑的 JLink 直接送给虚拟机中运行的 Linux。我没有 JLink,所以下图中没有,你需要自己选择硬件并点击箭头后再点击”connect”:
嵌入式开发环境的搭建
另外,下面需要安装 minicom,也需要按上图将串口连接到 Linux *** 作系统;
27、 这一步安装minicom。将虚拟机文件夹 Ubuntu 下的 minicom_2.3-1ubuntu2_i386.deb 复制到shared文件下,之后执行命令:sudo dpkg --install /mnt/hgfs/shared/ minicom_2.3-1ubuntu2_i386.deb
到这一步,windows 系统下的嵌入式 ARM 开发环境搭建完成了。重启一下更好。
至于 Linux 系统下的配置,这要复杂得多,因为系统情况完全不一样,因而,这里不再给出,当然,所有的软件也跟上面的完全一样。
另外,minicom、JLink 的配置和使用,这里就不说了,自己到网上去找吧,若搞不好,就当自虐了。反正我已经送佛到西了,整个过程不需要仍何网络,不需要上网
所附的光盘镜像文件中还有一些 windows 下的软件,如 SecureCRT、arm-none-linux-gcc 等,这些也能用到,只不过我没那个心情讲更多了,以上的配置已经完全足够了。
网络是个好东西,没有网络,就没有 LINUX,也没有快速学习的条件。所以——现在,自学去吧。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)