从mex文件获取printf命令时,matlab停止工作

时间:2015-01-24 21:44:36

标签: printing

我是C ++和编码的新手 我怎么试着在matlab中使用mex文件

mex文件有打印参数的问题

我发送了错误图片

代码也如下

`#include <windows.h>
#include <mex.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdint.h>
#include "./mavlink/v1.0/common/mavlink.h" //MAV_CMD_COMPONENT_ARM_DISARM is just defined 
#include "C:\Users\SONY\Documents\Visual Studio 2010\Projects\code_test_2/inttypes.h"

#define STRICTfstat
#define WIN32_LEAN_AND_MEAN
#define CALL_TYPE_INIT 0
#define CALL_TYPE_CODE 1
#define CALL_TYPE_DECODE 2
#define CALL_TYPE_ARM 3
#define CALL_TYPE_DISARM 4

#ifndef MAV_CMD_COMPONENT_ARM_DISARM
#define MAV_CMD_COMPONENT_ARM_DISARM 400
#endif

unsigned char buf[4096];    // we put send and recive data in it enshaallah
int receive_chan = 0;
int system_id = 0;
int component_id = 0;
int APM_Sys_ID=0;   // we use it instead of target sys ID
int APM_Comp_ID=0;  // we use it instead of target component ID

mavlink_status_t status_copy;
mavlink_heartbeat_t system_heart_beat;
mavlink_message_t msg;
mavlink_attitude_t attitude; // it specifies the type of attitude. it says attitude is a data of type mavlink_attitude (hosein)
mavlink_rc_channels_raw_t rc_channels_raw;

void mexFunction(
        int nlhs,
        mxArray *plhs[],
        int nrhs,
        mxArray *prhs[]
    )
    {
        double *CALL_TYPE = mxGetPr(prhs[0]);


        if (*CALL_TYPE == CALL_TYPE_CODE){

                                            uint16_t chan1_raw,chan2_raw,chan3_raw,chan4_raw,chan5_raw,chan6_raw,chan7_raw,chan8_raw;

                                            printf("salam\n");

                                            double *Actuators = mxGetPr(plhs[1]); // here we get the Actuators value which is prepared in matlab (it is sent from matlab to visula studio)

                                            chan1_raw=1000*Actuators[0+8*0]+1000;
                                            //chan2_raw=1000*Actuators[1+8*0]+1000;
                                            //chan3_raw=1000*Actuators[2+8*0]+1000;
                                            //chan4_raw=1000*Actuators[3+8*0]+1000;
                                            //chan5_raw=1000*Actuators[4+8*0]+1000;
                                            //chan6_raw=1000*Actuators[5+8*0]+1000;
                                            //chan7_raw=1000*Actuators[6+8*0]+1000;
                                            //chan8_raw=1000*Actuators[7+8*0]+1000;

                                            /*mavlink_msg_rc_channels_override_pack(
                                            system_id,
                                            component_id,
                                            &msg,//msg is out put and it is the way mavlink has determined and ali has no role on it
                                            APM_Sys_ID,//we replaced target_system with APM_Sys_ID (this is the change we made in original code)
                                            APM_Comp_ID,
                                            chan1_raw,
                                            chan2_raw,
                                            chan3_raw,
                                            chan4_raw,
                                            chan5_raw,
                                            chan6_raw,
                                            chan7_raw,
                                            chan8_raw);
                                            */

                                             printf("% PRIu16\n",chan1_raw);
                                            //printf("%i",chan2_raw);
                                            //printf("%i",chan3_raw);
                                            //printf("%i",chan4_raw);
                                            //printf("%i",chan5_raw);
                                            //printf("%i",chan6_raw);

                                            }
    }`

如果有可能,请帮我解决这个问题

0 个答案:

没有答案