之前寫過一篇 Mac開發(fā)之USB HID 通訊
很多朋友在開發(fā)實(shí)戰(zhàn)中或多或少遇到一點(diǎn)問題趣苏,有的涉及到每個(gè)下位機(jī)的不同,會(huì)給開發(fā)帶來一些麻煩,我這邊手里事情也比較多匾旭,沒有辦法為朋友一一解答,回復(fù)圃郊,所以我封裝了一個(gè)Mac UsbHid 通訊庫 并且寫了一個(gè)通訊實(shí)例可供大家參考下載(注釋很詳盡??)价涝。
git 下載地址 : 點(diǎn)擊下載實(shí)例
??測試通訊的時(shí)候里面需要修改的是:
usbHid.m
ID 信息需要改成通訊設(shè)備的ID
查詢-> 導(dǎo)航??圖標(biāo) -> 概覽 -> 系統(tǒng)報(bào)告 -> USB -> 對應(yīng)設(shè)備信息里面
const long vendorID = 0xyyyy;
const long productID = 0xzzzz;
封裝的方法概覽:
連接設(shè)備
- (void)connectHID;
發(fā)送數(shù)據(jù)
- (void)sendData:(unsigned char *)outbuffer;
接收數(shù)據(jù)
//是通過代理返回到VC的噢
@property(nonatomic,strong)id<UsbHidDelegate> delegate;
//具體代理里面的方法如下:
//收到數(shù)據(jù)返回 recvData(具體數(shù)據(jù)) reportLength(數(shù)據(jù)長度)
- (void)usbhidDidRecvData:(uint8_t*)recvData length:(CFIndex)reportLength;
//設(shè)備插入/設(shè)備拔出
- (void)usbhidDidMatch;
- (void)usbhidDidRemove;
獲取設(shè)備管理對象
- (IOHIDManagerRef)getManageRef;
- (void)setManageRef:(IOHIDManagerRef)ref;
獲取設(shè)備
- (IOHIDDeviceRef)getDeviceRef;
- (void)setDeviceRef:(IOHIDDeviceRef)ref;
使用
1.在VC中 import usbHid.h / 引用代理
#include <IOKit/hid/IOHIDLib.h>
#import "usbHid.h"
@interface RootViewController ()<UsbHidDelegate>
2.聲明為局部變量 hid (各位看官老爺隨意)
usbHid *hid;
3.創(chuàng)建 usbHid 變量
hid = [usbHid sharedManager];
4.添加數(shù)據(jù)返回代理
hid.delegate = self;
5.連接設(shè)備
[hid connectHID];
6.發(fā)送數(shù)據(jù)
unsigned char testData[7];
[hid sendData:testData];
7.添加代理(數(shù)據(jù)返回)方法
- (void)usbhidDidRecvData:(uint8_t*)recvData length:(CFIndex)reportLength
{
NSLog(@"recvDataLength -- %ld",reportLength);
}
備注:例子中有的不解可以參考 我的另一篇文章
git 下載地址 : 點(diǎn)擊下載實(shí)例