检测硬件平台版本号

#include <sys/types.h>
#include <sys/sysctl.h>
//根据不同判断,确定出硬件版本号
- (void)showPlatform {
int mib[2];
size_t len;
char *machine;

mib[0] = CTL_HW;
mib[1] = HW_MACHINE;
sysctl(mib, 2, NULL, &len, NULL, 0);
machine = malloc(len);
sysctl(mib, 2, machine, &len, NULL, 0);

    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
    free(machine);

if ([platform isEqualToString:@"iPhone1,1"])    platform = @"iPhone 1G";
    if ([platform isEqualToString:@"iPhone1,2"])    platform = @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])    platform = @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])    platform = @"iPhone 4";
    if ([platform isEqualToString:@"iPod1,1"])      platform = @"iPod Touch 1G";
    if ([platform isEqualToString:@"iPod2,1"])      platform = @"iPod Touch 2G";
    if ([platform isEqualToString:@"iPod3,1"])      platform = @"iPod Touch 3G";
    if ([platform isEqualToString:@"iPod4,1"])      platform = @"iPod Touch 4G";
    if ([platform isEqualToString:@"iPad1,1"])      platform = @"iPad";
    if ([platform isEqualToString:@"iPad2,1"])      platform = @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      platform = @"iPad 2 (GSM)";
    if ([platform isEqualToString:@"iPad2,3"])      platform = @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"i386"])         platform = @"Simulator";

NSLog(@"Device:%@",platform);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言代码实现: ```c #include <stdio.h> #include <stdint.h> #define BUF_LEN 16 int main() { uint8_t buf[BUF_LEN]; uint32_t hw_version, sw_version, test_version; // 从串口读取数据 for (int i = 0; i < BUF_LEN; i++) { buf[i] = getchar(); } // 检查数据是否符合要求 if (buf[0] != 0xAA || buf[1] != 0xBB || buf[14] != 0x0D || buf[15] != 0x0A) { printf("Invalid data!\n"); return 0; } // 解析版本号 hw_version = (buf[2] << 24) | (buf[3] << 16) | (buf[4] << 8) | buf[5]; sw_version = (buf[6] << 24) | (buf[7] << 16) | (buf[8] << 8) | buf[9]; test_version = (buf[10] << 24) | (buf[11] << 16) | (buf[12] << 8) | buf[13]; // 打印版本号信息 printf("Hardware version: %d.%d.%d.%d\n", (hw_version >> 24) & 0xFF, (hw_version >> 16) & 0xFF, (hw_version >> 8) & 0xFF, hw_version & 0xFF); printf("Software version: %d.%d.%d.%d\n", (sw_version >> 24) & 0xFF, (sw_version >> 16) & 0xFF, (sw_version >> 8) & 0xFF, sw_version & 0xFF); printf("Test version: %d.%d.%d.%d\n", (test_version >> 24) & 0xFF, (test_version >> 16) & 0xFF, (test_version >> 8) & 0xFF, test_version & 0xFF); return 0; } ``` 这个代码首先定义一个长度为16的缓冲区,然后从串口读取16个字节的数据存入缓冲区中。接着,它检查数据是否符合要求,即开头和结尾是否正确。如果数据无效,程序输出"Invalid data!"并退出。如果数据有效,程序解析版本号,并按照要求打印出来。需要注意的是,在打印版本号时,需要将高字节放在前面,低字节放在后面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值