如何定义正在使用的通讯设备
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何定义正在使用的通讯设备相关的知识,希望对你有一定的参考价值。
LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动在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(); bus; bus = bus->next)
for (dev = bus->devices; dev; dev = 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(); bus; bus = bus->next)
for (dev = bus->devices; dev; dev = 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 = 0; i < 64; i++)
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 = 0; i < recvCount; i++)
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 System; using System.Collections.Generic; using 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 安装的太多了,把其他的都卸载掉就行了 参考技术A 通讯设备是指为信息传输、加工和控制而设置的特定装置,包括电信交换机、路由器、有线和无线通信系统、数字通信网以及某些特定的软件等。正在使用的通讯设备指的是按要求执行信息传输、加工和控制的那些通讯设备。 参考技术B 通讯设备指的是可以传输数据的硬件,它们可以用于处理信息和促进网络通信。通常情况下,它们包括电信设备,无线电设备,复合媒体设备,计算机网络设备,网络连接设备,扩音设备,传输设备,通信信号处理设备,电信信令处理设备,卫星通信设备,无线电话设备,移动数据设备,调制解调器,路由器,交换机,防火墙,网络存储设备等等。 参考技术C 正在使用的通讯设备是指任何能够实现无线或有线传输信息的设备,包括电话、手机、无线网络和卫星通信等。 参考技术D 连接上路由器无线信号后,请登录路由器管理界面点击“无线设置”--“无线客户端”,在这里就可以看到所有连接的无线客户端了(不包括用有线直接连接路由器的)。
设备为 iPhone 时如何显示后退按钮
【中文标题】设备为 iPhone 时如何显示后退按钮【英文标题】:How I can show back button when device is iPhone 【发布时间】:2019-02-23 22:58:36 【问题描述】:我正在使用颤振开发应用程序。但是我陷入了Android设备具有默认后退按钮但iPhone没有的情况。因此,当我在 iOS 设备中打开应用程序时,我需要显示后退按钮。 另外,如果还有其他可用的内置功能,请指导我。
【问题讨论】:
如果您不使用材料并且正在构建自己的自定义界面,则需要 'dart:io' Platform.isIOS 来检测 iOS... 【参考方案1】:使用Scaffold
和AppBar
,它会自动在屏幕右上角创建虚拟后退按钮。 (假设您在另一个屏幕上push
Widget)。
return Scaffold(
appBar: AppBar(
title: Text("Title"),
),
body: YourBody(),
);
【讨论】:
【参考方案2】:默认情况下,我们将为 both android 和 iOS 获取返回按钮。如果我们不想要它,我们可以通过将空容器(Container()
)赋予 appBar 的 leading
值来移除。更多详情请参考this
【讨论】:
Dinesh 实际上我没有在容器中使用 AppBar。 你能在不使用 appBar 的地方显示你的代码/页面吗以上是关于如何定义正在使用的通讯设备的主要内容,如果未能解决你的问题,请参考以下文章
如何使用同一个 GPU 设备在 SLURM 中定义多个 gres 资源?