objective-c和硬件协议通信

一、简介
iOS与硬件设备模块(C语言)通信,iOS发送消息指令给硬件,硬件收到消息后,进行逻辑处理,再将应答消息返回iOS解析,界面展示结果

C语言采用unsigned char接收二进制数据,iOS需要将16进制数据转换成Byte数组,以NSData类型向设备发送协议
unsigned char(等于Byte) 1个字节  值域范围:0~255

*_t类型为:

序号 类型 字节长度
1 uint8_t 1字节
2 uint16_t 2字节
3 uint32_t 4字节
4 uint64_t 8字节

二、发送协议消息
1.将拼接的16进制消息内容转换为Data数据

NSData *verificationData = [self convertHexStrToData:msgContent];

2.调用CRC16方法,将消息内容生成4位校验码,返回(消息内容+CRC校验码)

NSData *converData = [self calCRCWithData:verificationData];

3.将消息体内容进行转义处理,比如:AA <————> BB后紧跟一个 01

NSString *strMsg =[self convertDataToHexStr:finalDataM];

4.在转义内容前后增加标识位

NSString *flagBit = @"FF";
strMsg = [flagBit stringByAppendingString:strMsg];
strMsg = [strMsg stringByAppendingString:flagBit];

5.拆分NSString字符,每2位转换为unsigned char,放入数组中

NSData *trandata2 = [self convertHexStrToData:strMsg];

6.通过TCP将NSData数据发送给设备

三、接收应答消息
1.解析设备返回的应答数据,转换为16进制字符串

NSData *dataMsg = [NSData dataWithBytes:bytes length:sizeof(bytes)];

2.判断应答字符串前后缀是否为“FF“

NSString *headeMsg = [strMsg substringWithRange:range];
range.location = [strMsg length]-2;
NSString *footMsg = [strMsg substringWithRange:r
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值