返回码
Code | Message |
---|---|
200 | Success |
201 | Oprerator time out |
2002 | Parameter error |
2003 | Server error |
2004 | Chip output error |
2005 | No latitude and longitude information |
401 | Chip loses connection |
60001 | Parameter is null |
200000091 | User Cancel |
每次通过nfc读取数据时,都需要先打开NFC,然后发出一条指令以读取数据(可以发出多个命令),然后关闭NFC。
//open nfc
VeChainNFCSDK.openNFC()
// send command
// ... Can send multiple commands
//close nfc
VeChainNFCSDK.invalidateNFC ()
读取芯片操作的配置信息
//open nfc
VeChainNFCSDK.openNFC()
//send command
VeChainNFCSDK.readConfig { (response,errorCode) in
if errorCode == ErrorCode.SuccessCode
{
print("success")
}
//close nfc
VeChainNFCSDK.invalidateNFC ()
}
获取写芯片配置信息验证码
在芯片工作之前,应先设置温度,湿度或加速度的配置信息,以确保它是特定芯片,并通过验证码进行验证。 读取验证码,如下所示:
//open nfc
VeChainNFCSDK.openNFC()
//send command
VeChainNFCSDK.readVerifyCode { (response, errorCode) in
if code == ErrorCode.SuccessCode
{
print("success")
}
close nfc
VeChainNFCSDK.invalidateNFC ()
}
设置芯片工作配置
//open nfc
VeChainNFCSDK.openNFC()
//send command
VeChainNFCSDK.setupConfig(configModel:WriteConfigModel) {(response,errorCode) in
if (errorCode == ErrorCode.SuccessCode)
{
print("success")
}
//close nfc
VeChainNFCSDK.invalidateNFC ()
}
WriteConfigModel:
public var verifyCode:Int = 0 // verified by the verification code
public var account:String = "" // the account modifies config
public var isTempEnable:Bool = false // Whether the temperature acquisition function is on.
public var interval:Int = 0 // Temperature acquisition interval (minute), greater than or equal to 1.
public var startDelay:Int = 0 // Delay time (minute), greater than or equal to 0.
public var runningTime:Int = 0 // Running time (minute), 0 to unlimited time.
public var validMinimum:Float = 0.0 // Minimum Temperature (°c) Accurate 1-digit decimal, not lower than -40.
public var validMaximum:Float = 0.0 // Maximum Temperature (°c) Accurate 1-digit decimal,not higher than 85.
public var isHumidityEnable:Bool = false // Whether the humidity acquisition function is on.
public var humidityInterval:Int = 0 // Humidity acquisition interval (minute), greater than or equal to 1.
public var humidityStartDelay:Int = 0 // Delay time (minute), greater than or equal to 0.
public var humidityRunningTime:Int = 0 // Running time (minute), 0 to unlimited time.
public var isAccelerateEnable:Int = false // Whether the Acceleration acquisition function is on.
读取收集的温度,湿度和加速度数据
VeChainNFCSDK.openNFC()
VeChainNFCSDK.readSensorData() { (sensorDataModel,errorCode) in
if (errorCode == ErrorCode.SuccessCode)
{
print("success")
}
VeChainNFCSDK.invalidateNFC()
}
SensorCollectionDataModel description
public var tempGroupSize:Int = 0 //Number of compression of temperature data
public var humidityGroupSize:Int = 0 //Number of humidity data compressed
public var accGroupSize:Int = 0 //Number of acceleration data compression
public var tempDataList:Array<Any> = Array<Any>()
public var tempTimeList:Array<Any> = Array<Any>()
public var tempHash:Array<Any> = Array<Any>()
public var humidityDataList:Array<Any> = Array<Any>()
public var humidityTimeList:Array<Any> = Array<Any>()
public var humidityHash:Array<Any> = Array<Any>()
public var accelerateDataList:Array<Any> = Array<Any>()
public var accelerateTimeList:Array<Any> = Array<Any>()
public var accelerateHash:Array<Any> = Array<Any>()
public var config:String = ""//Hexadecimal string
public var configModel:ConfigDataModel = ConfigDataModel() //
ConfigDataModel description
public var isTempEnable:Bool = false //Is the temperature measurement on
public var interval:Int = 0//Unit minute
public var startDelay:Int = 0//Unit minute
public var runningTime:Int = 0//Unit minute
public var validMinimum:Float = 0.0//Actual value*10
public var validMaximum:Float = 0.0//Actual value*10
public var accuracy:Int = 0//Temperature data storage accuracy
public var isHumidityEnable:Bool = false //Is the humidity measurement on
public var humidityInterval:Int = 0 //Humidity measurement interval,Unit minute
public var humidityStartDelay:Int = 0 //Unit minute
public var humidityRunningTime:Int = 0 //Unit minute
public var isAccelerateEnable:Bool = false //Is the accelerate measurement on
public var configTime:Int = 0//Positioning accuracy,Unit meters
public var status:Int = 0
public var account:String = ""
public var configLongitude:Float = 0.0//(Actual value*1000000);
public var configLatitude:Float = 0.0//(Actual value*1000000);
public var configLocationAccuracy:Int = 0//Positioning accuracy,Unit meters
public var isStop:Bool = false //Whether the chip is suspended
public var isTemperatureStop:Bool = false //Whether temperature acquisition is stopped
public var isHumidityStop:Bool = false //Whether humidity acquisition is stopped
public var isAccelerateStop:Bool = false //Whether acceleration acquisition is stopped
public var isTemperatureFull:Bool = false //Whether temperature data is full
public var isHumidityFull:Bool = false //Whether humidity data is full
public var isAccelerateFull:Bool = false //Whether accelerate data is full
public var isSupportTemperature:Bool = false
public var isSupportHumidity:Bool = false
public var isSupportAcceleration:Bool = false
public var uid:String = ""//Hexadecimal string
public var vid:String = ""//Hexadecimal string
public var saltNo:String = ""//Hexadecimal string
public var remainingRunTime:Float = ""//Calculated battery runtime
public var battery:Int = ""//Battery percentage 0 ~ 100
public var currentTime:Int = 0 // 'current' as in: when the response class was created
public var correctionFactor:Double = 0.0 //correction factor
验证芯片数据
使用SDK来验证数据是否真实可靠,或者数据是否已被修改,如果数据不真实或已被修改,则返回失败
let verifyModel = VerifyDataModel()
verifyModel.data = self.sensorDataModel.dataList
verifyModel.signature = self.sensorDataModel.signature
switch opType {
case .readTemperature:
verifyModel.groupSize = String(self.sensorDataModel.tempGroupSize)
case .readHumidity:
verifyModel.groupSize = String(self.sensorDataModel.humidityGroupSize)
case .readAcceleration:
verifyModel.groupSize = String(self.sensorDataModel.accGroupSize)
default:
break
}
verifyModel.uid = self.sensorDataModel.uid
verifyModel.vid = self.sensorDataModel.vid
verifyModel.saltNo = self.sensorDataModel.saltNo
verifyModel.config = self.sensorDataModel.config
VeChainNFCSDK.verfiyHash(verifyModel:verifyModel) { (code) in
if code == ErrorCode.SuccessCode{
TAlert.show(type: .info, text: "checkhash success")
}else{
TAlert.show(type: .info, text: "checkhash fail")
}
}
评论
0 条评论
请登录写评论。