之前寫過一篇 Mac開發(fā)之USB HID 通訊
很多朋友在開發(fā)實戰(zhàn)中或多或少遇到一點問題,有的涉及到每個下位機的不同,會給開發(fā)帶來一些麻煩,我這邊手里事情也比較多,沒有辦法為朋友一一解答,回復,所以我封裝了一個Mac UsbHid 通訊庫 并且寫了一個通訊實例可供大家參考下載(注釋很詳盡??)。
git 下載地址 : 點擊下載實例
??測試通訊的時候里面需要修改的是:
usbHid.m
ID 信息需要改成通訊設備的ID
查詢-> 導航??圖標 -> 概覽 -> 系統(tǒng)報告 -> USB -> 對應設備信息里面
const long vendorID = 0xyyyy;
const long productID = 0xzzzz;
封裝的方法概覽:
連接設備
- (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;
//設備插入/設備拔出
- (void)usbhidDidMatch;
- (void)usbhidDidRemove;
獲取設備管理對象
- (IOHIDManagerRef)getManageRef;
- (void)setManageRef:(IOHIDManagerRef)ref;
獲取設備
- (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.連接設備
[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 下載地址 : 點擊下載實例