tag 标签: labwindows/cvi

相关博文
  • 热度 3
    2013-10-22 02:37
    3193 次阅读|
    1 个评论
    所谓的花里挑花,也即一直选型的——上位机软件开发,从VB到VC++,在到C++Builder,在到QT,再到LabView等等,最后选中了CVI(LabWindows/CVI),感觉良好,所以大家都懂得。因为是刚开始,所以好多知识点可能还做的不到位,望各位高手别拍砖,而是多多指教,先谢。 由于自己爱好和出书的缘故,必须的搞定上位机的开发,所以先来个2小时的成果,望能和大家共勉。                                            说明:界面有点丑,没夜月狼丑,望包涵哈! 先介绍一下,所谓下位机是MGMC-V1.0实验板,核心器件:单片机+LM75A温度传感器,实时采集当前温度,并通过串口打印到PC机上,最后结合自己编写的上位机软件,演示效果如上,说明此时温度也不高(18.125)啊。其实自己也想睡在被窝里,可是既然选择了这条路,没有退路,所以必须得搞起,呵呵。。。 最后来上整个上位机的源码,该源码自己当然能理解,也会写,但是还没真正吃透,因为才学了2个小时嘛,所以望理解,不过相信自己很快就能搞定,之后再给大家详细的注释和说明,若喜欢请等待,若不喜欢,请轻轻的走开,不要带走一点点“孤独”,也不要留下一丝丝“恶意”。 /* =============================================================== */   #include rs232.h #include ansi_c.h #include "sample5.h"   static int panelHandle; int ComSelect=0; int status; char info ; // 字符型数组,用于存放发送、接收的字符串   int CVIFUNC DimObject(int stat) //设置页面控件状态,stat=0表示串口关闭,1串口打开 {     SetCtrlAttribute(panelHandle,PANEL_COMSELECT,ATTR_DIMMED ,stat);     SetCtrlAttribute(panelHandle,PANEL_BTLSELECT,ATTR_DIMMED ,stat);     SetCtrlAttribute(panelHandle,PANEL_JYSELECT,ATTR_DIMMED ,stat);     SetCtrlAttribute(panelHandle,PANEL_LONGSELECT,ATTR_DIMMED ,stat);     SetCtrlAttribute(panelHandle,PANEL_STOPSELECT,ATTR_DIMMED ,stat);       SetCtrlAttribute(panelHandle,PANEL_OPEN_COM,ATTR_DIMMED ,stat);      SetCtrlAttribute(panelHandle,PANEL_CLOSE_COM,ATTR_DIMMED ,!stat);      SetCtrlAttribute(panelHandle,PANEL_SEND,ATTR_DIMMED ,!stat);      SetCtrlAttribute(panelHandle,PANEL_CLEARSEND,ATTR_DIMMED ,!stat);      SetCtrlAttribute(panelHandle,PANEL_RECIEVE,ATTR_DIMMED ,!stat);      SetCtrlAttribute(panelHandle,PANEL_CLEARRECIVE,ATTR_DIMMED ,!stat);      return 0; }   int main (int argc, char *argv ='\0';             SetCtrlVal(PANEL,PANEL_RECIVETEXT,info);             //SetActiveCtrl(PANEL,PANEL_RECIVETEXT); // 考虑中!         break;     }     return 0; }   int CVICALLBACK Quit (int panel, int control, int event,         void *callbackData, int eventData1, int eventData2) {     switch (event)     {         case EVENT_COMMIT:             if(ComSelect)             {                 CloseCom(ComSelect);                 ComSelect=0;                 DimObject(0);             }             QuitUserInterface (0);         break;     }     return 0; }   int CVICALLBACK ComOpen (int panel, int control, int event,         void *callbackData, int eventData1, int eventData2) {     int comValue,btlValue,jhValue,longValue,stopValue;     switch (event)     {         case EVENT_COMMIT:             GetCtrlVal(PANEL,PANEL_COMSELECT,comValue);     //选择串口             GetCtrlVal(PANEL,PANEL_BTLSELECT,btlValue);          //选择波特率             GetCtrlVal(PANEL,PANEL_JYSELECT,jhValue);              //选择奇偶校验             GetCtrlVal(PANEL,PANEL_LONGSELECT,longValue);  //选择数据位             GetCtrlVal(PANEL,PANEL_STOPSELECT,stopValue);   //选择停止位             //设置和打开串口             status=OpenComConfig(comValue,"",btlValue,jhValue,                 longValue,stopValue,512,512);             if(status!=0)             {                 MessagePopup("Error","config failed!");                 return 0;             }             SetCTSMode(comValue,LWRS_HWHANDSHAKE_OFF);             FlushInQ(comValue);             //清空输入和输出缓冲区             FlushOutQ(comValue);             ComSelect=comValue;             DimObject(1);             break;     }     return 0; }   int CVICALLBACK ComClose (int panel, int control, int event,         void *callbackData, int eventData1, int eventData2) {     switch (event)     {         case EVENT_COMMIT:             CloseCom(ComSelect);             ComSelect=0;             DimObject(0);             break;     }     return 0; }   int CVICALLBACK ClearTextBox (int panel, int control, int event,         void *callbackData, int eventData1, int eventData2) {     switch (event)     {         case EVENT_COMMIT:             if(control==PANEL_CLEARRECIVE)                 ResetTextBox(PANEL,PANEL_RECIVETEXT,"\0");//清空接收文本框              else                 ResetTextBox(PANEL,PANEL_SENDTEXT,"\0");//清空发送文本框                   break;     }     return 0; } 演示完毕,一点“滚蛋”和一把实验板电源开关,上位机软件、实验板、自己统统睡觉,因为时间不早了啊(午夜2:40),大家都累了,晚安、好梦。。。
  • 热度 18
    2013-6-14 15:05
    1152 次阅读|
    0 个评论
    摘要:        雷达用于实现对目标的准确定位,帮助武器系统锁定目标,继而命中并摧毁目标。因此,雷达性能的优劣直接影响了对目标的定位精度,继而影响了整个武器系统的功效。本课题研究某型号雷达的自动测试系统,用于在研制、生产、维护过程中对雷达的性能指标进行详细、全面的测试,有力保证了雷达工作的可靠性。         本文详细分析了某型号雷达的测试需求,提出了基于PXI总线平台的雷达自动测试系统总体方案。整个系统由PXI机箱及嵌入式控制器、数据采集卡、专用串行通讯卡、信号转接组合、供电组合、自检组合、运动目标支架以及回波信号模拟器组成。该系统实现了雷达的供电控制及状态监测,雷达基本电气参数的测量,以及与雷达的同步485定时通讯、专用异步422通讯和基于TCP、UDP协议的以太网通讯等功能,且满足测试系统小型化的需求。       详细介绍了自研的专用串行通讯卡和自检组合的设计方法。专用串行通讯卡集标准异步422通讯、专用异步422通讯、同步485定时通讯功能于一身,分别实现了运动目标支架的控制、遥测设备与雷达通讯的模拟、飞控机与雷达定时通讯的模拟,且各通讯能够并行工作,降低了系统成本。自检组合基于DSP和FPGA的系统架构,实现了对雷达工作流程、测试信号以及多种通讯功能的模拟,为系统全面自检奠定了基础,其中对以太网通讯接口的模拟采用以太网协议芯片W5300实现,缩短了开发周期、降低了成本。       使用 LabWindows/CVI 软件平台完成了测试系统软件的开发,系统软件采用 VISA 技术、ODBC 技术、多线程技术进行设计,主要由测试管理软件、仪器驱动软件、手动测试软件、自动测试软件四部分组成。整个软件采用层次化、模块化设计思想,满足通用性和可移植性的要求。       系统联调结果表明,该雷达自动测试系统能够完成现阶段雷达的全部测试项目,符合雷达的测试需求。   作者:梁宇,哈尔滨工业大学   论文来自:万方知识服务平台 感谢关注!   更多信息与我们交流: WIZnet邮箱:wiznetbj@wiznettechnology.com WIZnet中文主页:http://www.iwiznet.cn WIZnet中文博客:http://blog.iwiznet.cn WIZnet企业博客:http://e.weibo.com/wiznet2012  
  • 热度 20
    2013-5-25 11:15
    5117 次阅读|
    6 个评论
    王建新 杨世凤 隋美丽主编的 《LabWindows/CVI虚拟仪器测试技术及工程应用》pdf版本的资料很难找 自己找了一份本来想共享给大家的,但是由于自己的私心,想刷一下自己淘宝店铺的信誉,所以这里想通过淘宝给大家发送! 宝贝链接为: http://item.taobao.com/item.htm?id=20696667709 【淘宝要求物品最低为1元,所以自己设置的1元,有觉得贵的可以联系我,给你改个价格,象征性的收1毛钱】  都不容易,不喜勿喷