将ExampleDemo内的framework文件夹下的LiteRTK.framework添加到自己的项目工程里面,
然后需要选中项目target->General->Frameworks,Libraries,and Embedded Content,
修改引入的
LiteRTK.framework的Embed到Embed&Sign选项
LiteRTK.framework目前是基于Objective-C开发,如果接入的项目也是OC环境可以直接引入#import <LiteRTK/LiteRTK.h>开始使用,
如果是Swift环境需要在桥接文件bridging-header里面引入#import <LiteRTK/LiteRTK.h>
如需增加项目对MFi设备的连接支持需要如下配置:
项目Info.plist添加
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.woncan.data</string>
</array>
var util: HCUtil?
util = HCUtil(delegate: self)使用以下方式搜索设备
util?.toSearchDevice(with: .BleRTK)//蓝牙rtk
util?.toSearchDevice(with: .EaRTK)//Mfi rtk搜索设备结果返回
func hcSearchResult(_ deviceNameList: [String]!, isDone: Bool) {
print("搜索到的设备:\(deviceNameList ?? [])")
}连接设备
util?.toConnectDevice(index)断开连接
util?.toDisconnect()连接设备成功
func hcDeviceConnected(_ index: Int) {
}收到数据
func hcReceive(_ deviceInfoBaseModel: HCDeviceInfoBaseModel!) {
//持续返回收到的卫星数据和差分数据
}设备连接断开
func hcDeviceDisconnected() {
}连接设备报错
func hcDeviceDidFailWithError(_ error: HCStatusError) {
switch error {
case .BleUnauthorized:
print("蓝牙未授权")
break
case .UnsupportedDeviceType:
print("不支持该设备连接")
break
case .BlePoweredOff:
self.list.removeAll()
print("手机蓝牙未开启,请先开启后再连接设备")
break
case .Unknown:
break
default:
break
}
}当前设备如果支持自带差分功能会在连接上蓝牙后去主动发起差分连接,无需其他配置就可以实现固定解。
var util: HCUtil?
self.util?.hasDeviceDiff //是否支持自带差分功能
self.util?.isConnectDeviceDiff //自带差分是否连接 self.util?.toConnectDeviceDiff() // 发起自带差分连接(需要判断设备是否支持该功能)
self.util?.toDisconnectDeviceDiff() // 断开自带差分连接 var socketUtil: HCSocketUtil?
self.socketUtil = HCSocketUtil()
self.socketUtil?.delegate = self获取挂载点
let model = HCDiffModel()
model.ip = self.addressTextField.text ?? ""
model.port = Int(self.portTextField.text ?? "") ?? 0
model.account = self.accountTextField.text ?? ""
model.password = self.passwordTextField.text ?? ""
self.socketUtil?.replaceDiffModel(model)
self.socketUtil?.getMountPoints()发起差分连接
let model = HCDiffModel()
model.ip = self.addressTextField.text ?? ""
model.port = Int(self.portTextField.text ?? "") ?? 0
model.account = self.accountTextField.text ?? ""
model.password = self.passwordTextField.text ?? ""
model.mountPointList = self.mountPointList
model.currentMountPoint = self.mountPointTextField.text ?? ""
self.socketUtil?.replaceDiffModel(model)
self.socketUtil?.toLogin()断开差分连接
self.socketUtil?.disconnect()写入NMEA原始数据
self.socketUtil?.sendData("\(nmeaSourceText)\r\n\r\n")差分登录成功
func loginSuccess(_ tcpUtil: HCSocketUtil) {
if timer == nil {//差分登录成功后需要把获取到的差分数据发送到硬件设备
timer = Timer(timeInterval: 0.5, target: self, selector: #selector(getDiffData), userInfo: nil, repeats: true)
RunLoop.current.add(timer!, forMode: .common)
}
timer?.fireDate = .distantPast
}
@objc func getDiffData() {
if let nmeaSourceText = nmeaSourceText, nmeaSourceText.count > 0 {
self.socketUtil?.sendData("\(nmeaSourceText)\r\n\r\n")
}
}差分登录失败
func loginFailure(_ tcpUtil: HCSocketUtil, error: Error?) {
self.socketUtil?.disconnect()
}获取挂载点成功
func didGetMountPointsSuccess(_ socketUtil: HCSocketUtil) {
self.socketUtil?.disconnect()
}处理差分数据
func didReadOriginDiffDataSuccess(_ data: Data, socketUtil: HCSocketUtil) {
//var util: HCUtil?
//差分数据发送给硬件设备处理
self.util?.toSend(data)
}
