阅读海康威视提供的相机SDK源码时,发现里面提到了高MAC地址和低MAC地址,打印下来是两个十进制数,而相机标签上贴的是MAC地址:C4-2F-90-F5-CE-3A,一时不知道这个高低位的排列顺序是什么,后来问了技术客服解决了。


1.关于海康相机MAC地址的SDK源码

/// \~chinese 设备信息    \~english Device info
typedef struct _MV_CC_DEVICE_INFO_
{unsigned short      nMajorVer;                  ///< [OUT] \~chinese 主要版本                                 \~english Major Versionunsigned short      nMinorVer;                  ///< [OUT] \~chinese 次要版本                                 \~english Minor Versionunsigned int        nMacAddrHigh;               ///< [OUT] \~chinese 高MAC地址                                \~english High MAC Addressunsigned int        nMacAddrLow;                ///< [OUT] \~chinese 低MAC地址                                \~english Low MAC Addressunsigned int        nTLayerType;                ///< [OUT] \~chinese 设备传输层协议类型,e.g. MV_GIGE_DEVICE  \~english Device Transport Layer Protocol Type, e.g. MV_GIGE_DEVICEunsigned int        nReserved[4];               ///<       \~chinese 预留                                     \~english Reservedunion{MV_GIGE_DEVICE_INFO stGigEInfo;             ///< [OUT] \~chinese GigE设备信息                             \~english GigE Device InfoMV_USB3_DEVICE_INFO stUsb3VInfo;            ///< [OUT] \~chinese USB设备信息                              \~english USB Device InfoMV_CamL_DEV_INFO    stCamLInfo;             ///< [OUT] \~chinese CameraLink设备信息                          \~english CameraLink Device Info// more ...}SpecialInfo;}MV_CC_DEVICE_INFO;

打印我自己相机的高低MAC地址:

相机上的标签:

2.关于MAC地址

  MAC地址——媒体访问控制地址是一个硬件地址,每一台网络设备都用物理地址来标识自己并且MAC地址是全球唯一的,用来唯一标识以太网中的一台设备。

  MAC地址长度为48比特,通常用十六进制表示。

  MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号。

  MAC地址包含两部分:

  • 1、前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。
  • 2、后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。

3.关于海康相机高低MAC地址解读

  一开始看了网上关于MAC的解读,以为高MAC地址对应前3个字节,低MAC地址对应后3个字节。。。

  实际是高MAC地址对应前2个字节,低MAC地址对应后4个字节。

相机MAC地址:C4-2F-90-F5-CE-3A
高MAC地址:50223——C4-2F
低MAC地址2432028218——90-F5-CE-3A

4.通过输入相机的MAC地址来决定连接哪个相机

  思路:输入相机标签上面的MAC地址,根据海康相机的高低MAC地址规则,将输入的MAC地址转为高低MAC地址,再去和枚举到的相机高低位MAC地址进行比较。(PS:由于int类型的范是-2147483648~2147483647,而以本相机为例的低MAC地址值是2432028218,显示已经超过了int的范围,所以需要设数据类型为unsigned int)。

// 通过输入相机的MAC地址来决定连接哪个相机
void macAddrDecide()
{unsigned int mac_addr_high = 0, mac_addr_low = 0;std::string input_mac_addr = "C4-2F-90-F5-CE-3A";std::cout << "mac地址:" << input_mac_addr.size() << std::endl;if (input_mac_addr.size() == 17) {std::string str_mac_addr_high = input_mac_addr.substr(0, 2);str_mac_addr_high += input_mac_addr.substr(3, 2);std::string str_mac_addr_low = input_mac_addr.substr(6, 2);str_mac_addr_low += input_mac_addr.substr(9, 2);str_mac_addr_low += input_mac_addr.substr(12, 2);str_mac_addr_low += input_mac_addr.substr(15, 2);std::cout << str_mac_addr_high << std::endl;std::cout << str_mac_addr_low << std::endl;mac_addr_high = std::stoi(str_mac_addr_high, 0, 16);mac_addr_low = std::strtoul(str_mac_addr_low.substr(0).c_str(), NULL, 16);}else {std::cout << "mac地址输入错误!" << std::endl;}std::cout << "高MAC地址:" << mac_addr_high << std::endl;std::cout << "低MAC地址:" << mac_addr_low << std::endl;
}

输出:

海康威视工业相机MAC地址相关推荐

  1. 海康威视工业相机SDK二次开发

    海康威视工业相机SDK二次开发 好气,第一次写文章,结果没不小心保存关掉,什么都没了. 本人是一名在读研究生,被导师分配了做项目中海康工业相机的二次开发.实现的需求是:实现八个相机同时打开视频,并且分 ...

  2. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一)

    最近在做一个项目,涉及到工业相机,需要对其进行二次开发.相机方面选择了海康威视,网上关于海康威视工业相机SDK的开发资料很少,官方文档里面虽然写的是支持C++开发的,但其实是C.自己也摸索了一段时间, ...

  3. Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)

    关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...

  4. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  5. java 根据ip获取mac地址_利用java如何根据IP获取mac地址

    利用java如何根据IP获取mac地址 发布时间:2020-11-25 15:49:42 来源:亿速云 阅读:74 作者:Leah 利用java如何根据IP获取mac地址?针对这个问题,这篇文章详细介 ...

  6. JAVA获取局域网内对应IP电脑的MAC地址(物理地址)

    创建类UdpGetClientMacAddr.java package com.shuzhiqiang.common;import java.io.IOException; import java.n ...

  7. vmware克隆centos修改linux mac地址

    故障背景:  在vmware workstation中了完全克隆了一个已经存在的centos的虚拟机,启动之后发现网卡没有启动.于是重启一下network服务,发现提示错误信息"Device ...

  8. 获取远程网卡MAC地址

    出自: http://blog.joycode.com/liuhuimiao/ 朋友mingal急问我有关获取远程网卡MAC地址的ASP.net实现.我一开始以为是获取本机MAC地址,说了几种方法给他 ...

  9. android mac测试地址,android获取有线网的Mac地址

    Android TV开发中有的机器会接有线网,需要获取Mac地址,下面是我测试的两种Mac地址的获取方式. 1.一共两个方法,目前第二个方法获取的不准,最后一位数取的不对. private Strin ...

最新文章

  1. AR设备单目视觉惯导SLAM算法综述与评价
  2. CVPR 2021 | 基于帧场学习的多边形建筑提取
  3. Boost Asio总结(4) io_service
  4. [翻译]三张卡片帮你记住TDD的基本原则
  5. Java commit()_Java XAResource.commit方法代码示例
  6. JAVA入门级教学之(关系运算符)
  7. python requests 提示警告 InsecureRequestWarning
  8. selenium java项目_1)selenium+ java集成,待深度项目流程应用
  9. 理解 invokedynamic
  10. 基于高斯分布的异常检测算法 项目描述
  11. python整数类型进制表示_Python数据类型--整型
  12. 如何调试程序的 Release 版本
  13. 深入浅出Docker(二):Docker命令行探秘
  14. document.body、document.documentElement和window获取视窗大小的差别
  15. Discuz注册页面的邮箱验证代码分析
  16. 高德地图加载标注并实现缩放动画
  17. Python爬虫自动领取满减优惠券,剁手党的福利!
  18. 数商云化妆品行业电商平台系统解决方案
  19. 港交所2012交易日列表
  20. 物联网专业可以插本计算机技术吗,物联网工程专业专接本考什么

热门文章

  1. javascript开发HTML5游戏--斗地主(单机模式part3)
  2. ecb gcm java 加密,AES GCM和ECB加密软件,附算法源码和工程文件
  3. Latex-TiKZ绘制数学平面几何图教程
  4. C1实训-动态令牌(二次验证码)原理及实现
  5. ora-00001违反唯一约束
  6. 【Websocket 第三篇】消息推送
  7. Java语法快速学习-黑马程序员(个人整理版本)
  8. 关于深度学习人工智能模型的探讨(四)(5)
  9. 让我们旋转跳跃不停歇~~~当3D打印遇上八音盒!(三)
  10. 博士骗领210万元、硕士骗领3万元人才补贴,全被判刑了!