反射内存卡读写测试(RFM2gRead和RFM2gWrite)-- C++
一、函数介绍:
1.1 RFM2gWrite
STDRFM2GCALL RFM2gWrite( RFM2GHANDLE rh, RFM2G_UINT32 Offset, void *Buffer, RFM2G_UINT32 Length );
说明:
RFM2gWrite()函数将一个或多个I/O数据缓冲区从应用程序传输到RFM2g节点,从指定的对齐内存偏移开始。
参数及返回值说明:
rh :打开RFM2g设备的句柄。
Offset :在指定偏移量位置开始写入数据。64MB卡的有效偏移值为0x0到0x3FFFFFF, 128MB卡的有效偏移值为0x0到0x7FFFFFF, 256MB卡的有效偏移值为0x0到0x0FFFFFFF。
Buffer: 要写入的数据。
Length: 写入的字节数长度,有效值为0 ~ ([RFM Size] ‐ rfmOffset)。
1.2 RFM2gRead
STDRFM2GCALL RFM2gRead( RFM2GHANDLE rh,RFM2G_UINT32 Offset,void *Buffer,RFM2G_UINT32 Length );
说明:
RFM2gRead()函数用于将一个或多个字节从RFM2g内存传输到系统内存。
参数及返回值说明:
rh :打开RFM2g设备的句柄。
Offset :在指定偏移量位置开始读取数据。64MB卡的有效偏移值为0x0到0x3FFFFFF, 128MB卡的有效偏移值为0x0到0x7FFFFFF, 256MB卡的有效偏移值为0x0到0x0FFFFFFF。
Buffer :要写入的数据。
Length :传输的字节数长度,有效值为0 ~ ([RFM Size] ‐ rfmOffset)。
二、示例
2.1 写入/读取字符数组数据:
写入字符串数据 “testrfm”,执行结果如图1:
bool WriteStringData(RFM2GHANDLE hd)
{RFM2G_STATUS result;RFM2G_UINT8 write_data[BUFFER_SIZE]= { 't','e','s','t','r','f','m'}; // 要写入的数据:testrfmresult = RFM2gWrite(hd, OFFSET_0, (void*)write_data, sizeof(write_data)); // 写入if (result != RFM2G_SUCCESS){std::cout << "数据写入失败!错误代码: " << result << std::endl;return false;}std::cout << "数据写入成功!" << std::endl;return true;
}
图1:
读取数据,结果如图2:
bool ReadStringData(RFM2GHANDLE hd)
{RFM2G_STATUS result;char read_data[BUFFER_SIZE]{0}; // 存储读取数据result = RFM2gRead(hd, 0x1, (void*)read_data, sizeof(read_data)); // 读取数据if (result != RFM2G_SUCCESS){std::cout << "数据读取失败!错误代码: " << result << std::endl;return false;}std::cout << read_data << std::endl;return true;
}
图2:
2.2 写入/读取结构体数据
循环5次写入结构体数据,结果如图3:
bool WriteStructData(RFM2GHANDLE hd)
{RFM2G_STATUS result;for (int i = 0; i < 5; i++){RFM2G_UINT8 write_data[BUFFER_SIZE]{};ChildInfo child{};child.age = i;std::string name = "LiMei_" + std::to_string(i); // 给结构体赋值memcpy(child.name, name.c_str(), sizeof(name));child.weight = (double)(i + 10) / 2;memcpy(write_data, &child, sizeof(child));result = RFM2gWrite(hd, OFFSET_0 + i * sizeof(child), (void*)write_data, sizeof(write_data)); // 写入数据if (result != RFM2G_SUCCESS){std::cout << "数据写入失败!错误代码: " << result << std::endl;return false;}std::cout << "数据写入成功!" << std::endl;}return true;
}
图3:
写入的时候每条数据的偏移量都会增加 i * sizeof(child) 的值是为了不覆盖上一条数据,所以要空出每条数据的长度。
读取结构体数据,结果如图4:
bool ReadStructData(RFM2GHANDLE hd)
{RFM2G_STATUS result;for (int i = 0; i < 5; i++){ChildInfo child;char read_data[BUFFER_SIZE]{ 0 }; // 存储读取结果result = RFM2gRead(hd, OFFSET_0 + i * sizeof(child), (void*)read_data, sizeof(read_data)); // 读取数据if (result != RFM2G_SUCCESS){std::cout << "数据读取失败!错误代码: " << result << std::endl;return false;}else{memcpy(&child, read_data, sizeof(ChildInfo));std::cout << "age: " << child.age << " name: " << child.name << " weight: " << child.weight << std::endl;}}return true;
}
图4:
有问题欢迎指正~
完整代码链接:
RFM反射内存卡读写数据测试-c++-C++文档类资源-CSDN文库
反射内存卡读写测试(RFM2gRead和RFM2gWrite)-- C++相关推荐
- 反射内存卡学习及使用---rfm2g驱动安装
目录 反射内存卡简介 一.测试环境搭建 二.rfm2g驱动安装 1.下载官方驱动 2.安装驱动 3.测试 反射内存卡简介 什么是反射内存卡?反射内存卡(RMN Reflective Memory Ne ...
- 一种基于PCI总线的反射内存卡设计
一种基于PCI总线的反射内存卡设计 摘要: 对实时传输, 传统的以太网络由于传输协议开销的不确定性, 很难满足实时网络的要求, 实时网络是一种应用于高实时性要求的专用网络通信技术, 一般采用基于高速网 ...
- linux美国GE公司扫描机器,美国GE 反射内存卡
一.概述: 美国GE 反射内存卡 二.详细说明: PCI5565 PCI-5565 PMC5565 VMIC5565 反射内存 反射内存卡 GE反射内存 反射内存主要特性: 1. 板载128Mbyte ...
- 在实现反射内存卡驱动程序DMA完成中断死机蓝屏纠结N天的一个低级BUG
本人负责软件从应用层一直到驱动层的全部研发任务,通过对GE产品的公开的资料反复研究,一共近70个函数接口,现在都搞明白了,由于GE产品光盘手册开源了Linux和VxWorks平台的全部软件代码,唯独不 ...
- 反射内存 延时_一种基于反射内存卡的OpenDDS分布式通信方法与流程
本发明属于分布式通信技术领域,尤其涉及一种基于反射内存卡的OpenDDS分布式通信方法. 背景技术: 随着分布式系统复杂程度的不断增加和研发规模的迅速扩大,系统集成的难度和风险都在大幅提高.提供实时系 ...
- PCI5565 PCI-5565 PMC5565 VMIC5565 反射内存 反射内存卡 GE反射内存
板载128Mbyte内存 网络传输高速,实时,确定 高速光纤网络波特率可达2.125G 低延迟率:节点间百纳秒级延迟 数据可以在256个独立系统(节点)间共享 与操作系统,处理 ...
- 读写测试_UFS3.0手机闪存测试曝光 读写速度足以秒杀超极本!
[手机中国新闻]2018年1月31日,固态技术协会(JEDEC)正式发布了UFS 3.0标准.相较于目前旗舰手机中常用的UFS 2.1闪存,UFS 3.0引入了HS-G4规范,每通道传输数据速率高达1 ...
- hadoop 基准测试与读写测试
2019独角兽企业重金招聘Python工程师标准>>> hadoop 基准测试与读写测试 排序100G数据 /opt/cloudera/parcels/CDH/bin/yarn ja ...
- matlab画扇区,NFCDemo NFC读写测试 ,自动读取每个扇区 块的值 matlab 238万源代码下载- www.pudn.com...
文件名称: NFCDemo下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 66 KB 上传时间: 2013-12-13 下载次数: 24 提 供 者: wuze ...
最新文章
- 17、Kubernetes容器交付介绍
- JavaScript强化教程——对象的值传递和引用传递
- ubuntu下php服务器搭建_Ubuntu服务器下搭建php运行环境的方法
- 用Docker之后还需要OpenStack吗
- 六大Web负载均衡原理与实现
- 修改MONGODB 最大连接数
- Activity 中的Toast在Activity销毁后报错,解决方法,把context改成应用的
- vscode自动修复eslint规范的插件及配置
- 安全随笔2:对称加密应用场景
- 推荐一款配有强大数据管理和可视化ETL的BI工具
- GitHub 免费开放开发者计划,增加系列新优势
- 算法导论——lec 12 平摊分析与优先队列
- android使用zxing生成二维码及带logo的二维码
- 信息收集----谷歌语句
- 适合普通大学生的前端开发学习路线
- 苦心研究两周,我特么终于搞懂啥是「元宇宙」了
- 2021年美赛资料准备
- 冬训成果何在?林丹无缘新赛季首冠状态成迷
- 【读书笔记】《比基尼口才》文皙铉
- mac下 iterm+Zsh+Oh My Zsh+tmux 配置方案