完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
标签 > HID
HID(High intensity Discharge)是高压气体放电灯的简称,一般由高压包、镇流器(安定器)、灯泡组成。电路中连接各电器设备的接线部件,由绝缘护套、接线端子、导线及绝缘包扎材料等组。
HID(High intensity Discharge)是高压气体放电灯的简称,一般由高压包、镇流器(安定器)、灯泡组成。电路中连接各电器设备的接线部件,由绝缘护套、接线端子、导线及绝缘包扎材料等组。
HID(High intensity Discharge)是高压气体放电灯的简称,一般由高压包、镇流器(安定器)、灯泡组成。电路中连接各电器设备的接线部件,由绝缘护套、接线端子、导线及绝缘包扎材料等组。
完成stm32 上HID的应用
这个是公司的项目,以前基于usb的虚拟串口来做上下位机通信,由于usb平时也就刷参数和调试之用,也不很常用,外面反应usb有时会连不上stm32控制器,心里一直认为不是大问题,后来反应的多了,就重视这个事情了,虽然usb平时不用,但是用的时候只要出现异常掉线,就再也连不上去了,特别影响用户对我们产品的信心。
在网上找了很多资料,到现在也只能隐约确定是stm32官方的虚拟串口库有问题,我发现不同的电源板都会影响到usb虚拟串口的枚举,于是下定决心使用其他方式来做上下位机的连接,排除了usb虚拟串口,眼前的选择只有两个
1)usblib,这个是针对usb的上位机库,可以玩很多的花样,但是需要开发者稍稍熟悉usb协议,而且这个需要在上位机上安装usb驱动程序。
2)hid设备,这个是windows自身支持的usb设备,只支持中断传输,最大的速率也就64Kb/s,上位机采用windows api编程
我估算了一下,hid方式满足我的要求,而且是免驱动,又不用学习usblib,所以就使用hid方式实现了usb通信。
hid几个注意事项:
1)对于windows API来说,读和写hid设备的数据包都是大小确定了,也就是说如果stm32 端口设备的hid属性是64的话,那么读写都是64字节的。读写的最大帧是64字节,我在代码中是基于64字节做应用层协议的。
2)hid写速度不能太快,所以我一般在写前会等待2ms左右,确保不会写出错。
确认是是HIDAPI的代码问题,我对写函数修改如下,结果就好了,可以一直写无需等待
int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char *data, size_t length)
{
DWORD bytes_written;
BOOL res;
BOOL bResult;
OVERLAPPED ol;
HANDLE ReportEvent;
ReportEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
ResetEvent(ReportEvent);
memset(&ol, 0, sizeof(ol));
ol.hEvent = ReportEvent;
//res = WriteFile(dev-》device_handle, data, 23, NULL, &ol);
res = WriteFile(dev-》device_handle, data, length, NULL, &ol);
if (!res) {
int errcode = GetLastError();
if (errcode != ERROR_IO_PENDING) {
// WriteFile() failed. Return error.
register_error(dev, “WriteFile”);
return -1;
}
}
bResult = WaitForSingleObject(ReportEvent, 50);
if(bResult == WAIT_TIMEOUT || bResult == WAIT_ABANDONED)
{
register_error(dev, “WriteFile”);
CancelIo(&(dev-》device_handle));
return -1;
}
// Wait here until the write is done. This makes
// hid_write() synchronous.
res = GetOverlappedResult(dev-》device_handle, &ol, &bytes_written, TRUE);
if (!res) {
// The Write operation failed.
register_error(dev, “WriteFile”);
return -1;
}
return bytes_written;
}
3)上位机上的读写之间不能释放hid的句柄,这个我参考百合的hid教材的时候,吃了不少苦头。
4)我使用了HIDAPI这个库来操作hid设备。
TE Connectivity LUMAWISE电源输入端子块 (TB) 为LED室外照明灯具和HID(高强度放电)灯具中使用的传统端子块提供独特、高度...
USB帧概念 如上图所示,在USB1.1规范当中,把USB总线时间按帧划分,每一帧占用时间是1ms; 每一帧内的最开始处是SOF token,在SOF内...
本文为大家带来CherryUSB-HID设备实践,以MCXA156为例。开发环境搭建请参考RT-Thread的快速入门,咱们就直入主题,折腾USB去。C...
ANS-BT101M是安朔科技推出的蓝牙接近开关模块,低功耗ble5.1,采用UART通信接口,实现手机自动无感连接,无需APP,人靠近车门自动开锁,支...
在linux内核中,为HID触摸面板实现了一个通用的驱动程序,位于/drivers/hid/hid-multitouch.c文件中。hid触摸驱动是以s...
随着HID设备(鼠标键盘、控制器、AR/VR设备等)快速演进,低延时、高报点率已成为行业核心诉求。蓝牙技术联盟(Bluetooth SIG)近期推出...
PECVDSiNx:H薄膜常用作晶硅太阳能电池的减反射和钝化层,其钝化效果与氢含量有关,但该薄膜在光照和热辐射下会发生氢致退化(HID)。光照后,p型和...
ANS-BT101M 是一款低功耗蓝牙模块,支持蓝牙 5.1 和 HID、GATT、HID 等配置文件。 模块可以通过UART通信和AT命令设置模块名称...
TRI的机器人技术高级副总裁Max Bajracharya指出:我们可以训练一个大型模型来一次性学习常识性知识,并通过自然语言编程并适应用户。
HJ-5011聚氨酯灌封胶为照明灯具封装的通用材料,它在使用时,胶体透明度较高,可使HID灯的光照效果得到良好体现,其流动性可使填平灯具内部间隙,使得密...
蓝牙HID,实际上指的就是蓝牙键盘、蓝牙鼠标、蓝牙遥控器等等设备类型,都称之为人机交互设备。这里我们KT6368A蓝牙芯片,就是虚拟成这些设备。对于wi...
单连接SDK中B85m_ble_sample适用825x芯片和827x芯片,所以编译选项中又分为了825x_ble_sample和827x_ble_sa...
我使用的硬件是极海的APM32F407IG MINI Board,它提供了一个全速的USB口(Type B)。打开Device_Examples目录中的...
编辑推荐厂商产品技术软件/工具OS/语言教程专题
| 电机控制 | DSP | 氮化镓 | 功率放大器 | ChatGPT | 自动驾驶 | TI | 瑞萨电子 |
| BLDC | PLC | 碳化硅 | 二极管 | OpenAI | 元宇宙 | 安森美 | ADI |
| 无刷电机 | FOC | IGBT | 逆变器 | 文心一言 | 5G | 英飞凌 | 罗姆 |
| 直流电机 | PID | MOSFET | 传感器 | 人工智能 | 物联网 | NXP | 赛灵思 |
| 步进电机 | SPWM | 充电桩 | IPM | 机器视觉 | 无人机 | 三菱电机 | ST |
| 伺服电机 | SVPWM | 光伏发电 | UPS | AR | 智能电网 | 国民技术 | Microchip |
| 开关电源 | 步进电机 | 无线充电 | LabVIEW | EMC | PLC | OLED | 单片机 |
| 5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
| NB-IoT | LoRa | Zigbee | NFC | 蓝牙 | RFID | Wi-Fi | SIGFOX |
| Type-C | USB | 以太网 | 仿真器 | RISC | RAM | 寄存器 | GPU |
| 语音识别 | 万用表 | CPLD | 耦合 | 电路仿真 | 电容滤波 | 保护电路 | 看门狗 |
| CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
| SDI | nas | DMA | HomeKit | 阈值电压 | UART | 机器学习 | TensorFlow |
| Arduino | BeagleBone | 树莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
| 示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
| OrCAD | Cadence | AutoCAD | 华秋DFM | Keil | MATLAB | MPLAB | Quartus |
| C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
| Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
| DuerOS | Brillo | Windows11 | HarmonyOS |