在MATLAB环境下实现对硬件资源的访问

2006-05-07 15:49:54来源: 电子技术应用


    CREATE_NEW,FILE_FLAG_DELETE_ON_CLOSE, 0);

    if (hDevice == INVALID_HANDLE_VALUE)

    {

    mexPrintf( ″Cannot open driver, error=%08lx\n″,GetLastError());

    }

    req.mdr_ServiceID = MDR_SERVICE_MAP;

    req.mdr_PhysicalAddress = 0xd8000; /*物理地址为d800:0 */

    req.mdr_SizeInBytes=0x8000;/*长度为0x8000*/inBuf[0] = &req;

    if(!DeviceIoControl(hDevice, MDR_SERVICE_MAP,inBuf,sizeof(PVOID),NULL,0,&cbBytesReturned,NULL)

    )

    mexPrintf( ″Failed to map device\n″);

    buff1=req.mdr_LinearAddress; /* 获取线性地址指针 */

    /* 直接进行I/O操作启动A/D */

    itemp = inp(0x300);

    itemp|=0x2;

    outp(0x300, itemp); /* start AD */

    itemp |= 0x4;

    outp(0x300, itemp); /* A/D initial clear */

    /* 对线性地址直接进行指针操作 */

    memcpy((unsigned short *)temp,(unsigned short*)buff1, 8192*sizeof(unsigned short));

    /* 设置返回标量值为点数 */

    temp=(unsigned short *)mxGetPr(plhs[1]);

    *temp=(unsigned short)points;

    }

    综上所述,在MATLAB环境下对硬件资源的访问可以通过MEX程序进行,由MEX程序产生的DLL程序可以作为一个动态连接库被MATLAB代码调用,而MEX程序也可以调用MATLAB的内部函数或外部函数。在MEX程序中利用MATLAB提供的API函数可以将MATLAB的内部数据类型转换为C语言可以处理的数据类型格式。另一方面,MEX程序传送回的整数数据也要变为双精度型数据,才能为其它函数所处理。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/others/200605/2424.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved