You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

403 lines
7.9 KiB

2 years ago
//
// JL_Tools.h
// JL_BLEKit
//
// Created by zhihui liang on 2018/11/9.
// Copyright © 2018 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^JL_Action)(void);
typedef void(^JL_Timer_BK)(void);
@class JL_Timer;
@interface JL_Tools : NSObject
/**
Data自定义截取
@param data
@param index
@param length
@return
*/
+(NSData*)data:(NSData*)data R:(NSInteger)index L:(NSInteger)length;
+(NSDictionary*)dictionaryData:(NSData*)data R:(NSInteger)index L:(NSInteger)length;
/**
NSData 10
@param data
@return NSInteger类型
*/
+(NSInteger)dataToInt:(NSData*)data;
/**
NSData NSString
@param data
@return
*/
+(NSString*)dataChangeToString:(NSData*)data;
/**
uint8_t NSData
@param value uint8_t类型
@return NSData
*/
+(NSData*)uInt8_data:(uint8_t)value;
/**
uint16_t NSData
@param value uint16_t类型
@param endian YES NO
@return NSData
*/
+(NSData*)uInt16_data:(uint16_t)value Endian:(BOOL)endian;
/**
uint32_t NSData
@param value uint32_t类型
@param endian YES NO
@return NSData
*/
+(NSData*)uInt32_data:(uint32_t)value Endian:(BOOL)endian;
/**
uint64_t NSData
@param value uint64_t类型
@param endian YES NO
@return NSData
*/
+(NSData*)uInt64_data:(uint64_t)value Endian:(BOOL)endian;
/**
int64_t NSData
@param value int64_t类型
@param endian YES NO
@return NSData
*/
+(NSData*)int64_data:(int64_t)value Endian:(BOOL)endian;
/**
@param data
@return
*/
+(NSData*)changeBigOrSmall:(NSData*)data;
/**
@"ffff0000" <ffff 0000>16NSData
@param hex @"ffff0000"
@return NSData类型 => <ffff 0000>
*/
+(NSMutableData*)HexToData:(NSString*)hex;
/**
*
*/
+(NSData*)cleanEOF:(NSData*)data;
/**
aByte ==> -2 -1 0 1 2 3...
@param aByte
@return
*/
+(int)getNaturalNumber:(NSData*)aByte;
+(int)getNaturalNumber_u16:(NSData*)u16Bytes;
+(int)getNaturalNumber_u32:(NSData*)u32Bytes;
/**
@param name
@param object
*/
+(void)post:(NSString*)name Object:(id __nullable)object;
/**
@param name
@param object
@param info
*/
+(void)post:(NSString*)name Object:(id __nullable)object UserInfo:(NSDictionary* __nullable)info;
/**
@param name
@param action
@param own
*/
+(void)add:(NSString*__nullable)name Action:(SEL)action Own:(id)own;
/**
@param name
@param own
*/
+(void)remove:(NSString*__nullable)name Own:(id)own;
/**
NSUserDefault存入对象
@param objc
@param key
*/
+(void)setUser:(id)objc forKey:(NSString*)key;
/**
NSUserDefault取出对象
@param key
@return
*/
+(id)getUserByKey:(NSString*)key;
/**
NSUserDefault相对应的对象
@param key
*/
+(void)removeUserByKey:(NSString*)key;
/**
block
@param sec
@param block
*/
+(void)delay:(double)sec Task:(JL_Action)block;
/**
block
@param block
*/
+(void)subTask:(JL_Action)block;
/**
线block
@param block
*/
+(void)mainTask:(JL_Action)block;
/**
@param sel
@param objc
@param sec
@return NSTimer
*/
+(NSTimer*)timingStart:(SEL)sel target:(id)objc Time:(NSTimeInterval)sec;
/**
@param timer
*/
+(void)timingPause:(__weak NSTimer*)timer;
/**
@param timer
*/
+(void)timingContinue:(__weak NSTimer*)timer;
/**
@param timer
*/
+(void)timingStop:(__weak NSTimer*)timer;
/**
@param sPath
@param mPath
@param file
@return
*/
+(NSString*)createOn:(NSSearchPathDirectory)sPath
MiddlePath:(NSString*)mPath
File:(NSString*)file;
/**
@param sPath
@param mPath
@param file
@return
*/
+(NSString*)listPath:(NSSearchPathDirectory)sPath
MiddlePath:(NSString*)mPath
File:(NSString*)file;
/**
* :
* @param sPath
* @param mPath -->> @"test1/test2/test3" <<--
* @param file
*/
+(NSString*)findPath:(NSSearchPathDirectory)sPath
MiddlePath:(NSString*)mPath
File:(NSString*)file;
/**
* :Project资源里寻找文件
* Copy Bundle Resources内
* @param file
* @return
*/
+(NSString*)find:(NSString *)file;
/**
*
* @param path
* @return YES or NO
*/
+(BOOL)isExistsPath:(NSString*)path;
/**
@param path
@return
*/
+(BOOL)removePath:(NSString*)path;
/**
* :
* @param path
*/
+(NSArray*)subPaths:(NSString*)path;
/**
* :JSON文件
* @param path
*/
+(id)JsonPath:(NSString*)path;
/**
* NSArray ==> NSString.
*/
+(NSString*)arrayToJson:(NSArray *)array;
/**
@param data
@param path
@return
*/
+(BOOL)writeData:(NSData*)data fillFile:(NSString*)path;
/**
@param data
@param path
*/
+(void)writeData:(NSData*)data endFile:(NSString*)path;
/**
@param data
@param seek
@param path
*/
+(void)writeData:(NSData*)data Seek:(unsigned long long)seek File:(NSString*)path;
/**
* UNICODE ()
*/
+(NSString*)stringUnicode:(NSData*)data;
/**
* UNICODE ()
*/
+(NSString*)stringUnicodeBig:(NSData*)data;
/**
* ANSI
*/
+(NSString*)stringANSI:(NSData*)data;
/**
* GBK
*/
+(NSString*)stringGBK:(NSData*)data;
/**
*
*/
+(NSData*)stringBigFileWithNeedRemoveUnnecessaryPunctuationCharactersWithString:(NSString*)name withFileNameIndex:(int)fileNameIndex;
/// 大文件传输文件名设置
/// Unicode编码
/// - Parameters:
/// - name: 文件名
/// - fileNameIndex: index
/// - encodeType: 编码格式
+(NSData *)stringBigFileUnicode:(NSString *)name withFileNameIndex:(int)fileNameIndex WithEncode:(NSStringEncoding) encodeType;
/**
* \ / : " < > . space
*/
+(NSString *)removeUnnecessaryPunctuationCharactersWithString:(NSString *)textString;
/**
*
*/
+(NSData*)stringBigFile:(NSString*)name withFileNameIndex:(int)fileNameIndex;
/**
*
*/
+(NSString*)removeSpecialStrings:(NSString*)name;
/**
*
*/
+(long)dateCurrent;
/// 把data变成LTV格式
/// @param type 类型
/// @param data 数据
+(NSData *)beLtv:(uint8_t)type Data:(NSData*)data;
/**
*
*/
+(void)openLogTextFile;
@end
@interface JL_Timer : NSObject
@property(nonatomic,assign)NSInteger subTimeout; //超时时间(默认5s)
@property(nonatomic,assign)NSTimeInterval subScale; //默认1.0s
-(void)waitForTimeoutResult:(JL_Timer_BK)result;
-(void)cancelTimeout;
-(void)threadWait;
-(void)threadContinue;
@end
NS_ASSUME_NONNULL_END