关于C2100间接寻址的问题
最近又在做一个CMOS相机和nm级位移台配合工作的问题
相机公司只提供了C++的SDK,所以我又要把它转成matlab的,因为之前做过一次的所以这次也是轻车熟路
相机的地址传入传出,一般来说相机地址都是自定义的类型,但绝大多数都是指针的,而mex的函数传的也是地址,也就是说传入传出也只有一次寻址,这个是比较简单的、
在之前的文章中有说明
接下来说说目前的问题
首先是结构体定义:
然后m_frame定义:
可以看得出来m_frame是一个结构体,而mex编译的时候是以地址方式传出的,所以,首先,我们传出的时候是这样传出的:
int *out1;plhs[0] = mxCreateNumericMatrix(1, 1,mxINT32_CLASS , mxREAL);out1 = (int *)mxGetPr(plhs[0]);*out1 = int(&m_frame);
其实这么写是有风险的,但是目前的出错率比较低,我目前也没有找到合适的解决方法,以后找到了再开一篇文吧
可以看得出来,我们传入的指向m_frame地址的指针所在的地址、
当我们想要对结构体进行赋值的时候,需要二次寻址,先贴出代码:
unsigned int k;k =mxGetScalar(prhs[3]);m_frame = *(TUCAM_FRAME *)(int*)k;
解释一下:
mxGetScalar是直接取值,也就是K是m_frame所在的地址,所以我们直接对其寻址就可以达到我们的目的
加入我们使用*k进行寻址,会报错,说是非法间接寻址
百思不得其解之际,想到了这么一串代码
int data = *(int *) 0x11111;
试了一下果然不行,嗯,我习惯了,想了一下,应该是类型不匹配
用m_frame的类型把括号里的类型替换点,类型统一就好了
关于C2100间接寻址的问题相关推荐
- 与数据相关的运算符和伪指令 offset align ptr type lengthof sizeof label 间接寻址 间接操作数 数组 变址操作数 指针 jmp, loop
与数据相关的运算符和伪指令 offset 数据标号的偏移量,按字节计算,表示数据标号到数据段开始的距离 .data bVal byte ? wVal word ? dVal dword ? dVal2 ...
- 间接寻址级别不同_详解西门子间接寻址之地址寄存器间接寻址
关于间接寻址分为存储器间接寻址和地址寄存器间接寻址,本文主要针对地址寄存器间接寻址进行详细讲解,关于存储器间接寻址可参见前面文章,链接如下: #详解西门子间接寻址之存储器间接寻址 [地址寄存器间接寻址 ...
- C++ 指向指针的指针(多级间接寻址)
C++ 指向指针的指针(多级间接寻址) #include <iostream>using namespace std;int main () {int var;int *ptr;int * ...
- step7db块寻址_step7中的难点:间接寻址示例,中文详细注释。
step7中的难点:间接寻址示例,中文详细注释. 推荐欢迎纠错,防止误导. FUNCTION "DBtoDB" : VOID //该功能块的作用是把一个数据块中的指定的一批数据,复 ...
- 汇编语言-004(LABEL 、间接寻址、变址操作数、指针使用、TypeDef、LOOP、DWORD变量交换高位低位字)
1: LABEL : 为一个标号定义大小属性,但不分配内存与下一个变量共用内存,与C中UNION类似 .386 .model flat,stdcall.stack 4096 ExitProcess P ...
- 间接寻址级别不同_单片机指令系统与寻址方式
单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由CPU执行该程序.程序是由指令组成的,指令的基本组成是操作码和操作数.单片机的品种很多,设计时怎样表示操作码和操作数,都有各自的规定,再有 ...
- C++实现的间接寻址
之前学过,数据描述方法中有公式化描述,链表描述,间接寻址和模拟指针,在之前已经将公式化描述和链表描述通过代码的形式展现出来了,现在贴出简介寻址的代码.其中简介寻址是融合了公式化描述和链表描述的有点,使 ...
- 一个具有20位地址和32位字长的存储器_详解西门子间接寻址之存储器间接寻址...
[地址的概念] 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如 NOT 等).其中的操作数是指令要执行的目标,也就是指令要进行操作的地址. 我们知道,在 PLC 中划有各种用途的存 ...
- 寄存器间接寻址缺点_详解西门子间接寻址之地址寄存器间接寻址
关于间接寻址分为存储器间接寻址和地址寄存器间接寻址,本文主要针对地址寄存器间接寻址进行详细讲解,关于存储器间接寻址可参见前面文章,链接如下: #详解西门子间接寻址之存储器间接寻址 [地址寄存器间接寻址 ...
- 80X86CPU独立编址方式的两种寻址方式——直接寻址直接写和间接寻址DX
直接寻址 :可寻址256个端口,编为00H–0FFH OUT 80H,AL IN AL,0FFH • 间接寻址: 使用16位地址码,从0000H- 0FFFFH,I/O端口地址用间接方式给出. MOV ...
最新文章
- 用Ajax请求服务器的图片,并显示在浏览器中(转)
- R可视化绘制卡方分布图(Chi-Square Distribution)
- 【408预推免复习】计算机组成原理之指令系统
- 糗事百科的网络爬虫(v0.2)源码及解析 .
- 一个商场营销经理的实习总结
- ICML 2020 | 第四范式基于AutoML的深度网络记忆性自动化挖掘
- cocos2d_android 瞬间动作
- php正则表达式 包含特殊字符,php正则表达式的特殊字符含义
- 从EF三层 到 DDD领域驱动设计(1)--------------数据操作
- LVM 逻辑卷管理精讲
- vue-cli项目中单文件组件引入bootstrap.js异常的解决方案
- [WPF系列]-DataBinding(数据绑定) 自定义Binding
- 使用HTML5里的classList操作CSS类
- Android开发+Java基础视频教程——第一讲
- ghost错误代码大全
- 大圆航线、恒向线绘制
- python面板数据模型_面板数据模型选择问题
- 站在巨人的肩膀上--邵泓鑫
- matlab处理各种数据、文件
- 什么软件测试iphone性能,iPhone浏览器性能测试
热门文章
- 电脑查看wifi密码
- office word 文件未找到:MathPage.WLL
- 获取select选中的值php,js如何获取select标签选中的值
- 前端 禁止微信调整字体大小
- Mysql8数据库导到Mysql5数据库,报错Unknown collation: 'utf8mb4_0900_ai_ci'
- 微信开发 · 缓存问题
- python去除图片马赛克_【Night Beam】去除文本马赛克的随机算法!
- python抢购软件/插件/脚本附完整源码
- 阿里云域名和ip绑定具体内容步骤
- 计算机低级格式化,硬盘格式化之低级格式化