专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

用C进行仪器控制系列数字万用表(4)

  此为用C进行仪器控制系列数字万用表的第4篇文章,在此之前已经编写了3篇相关文章了,可参见:
  1)用C进行仪器控制系列数字万用表(1):该篇文章介绍了如何从零开始创建一个控制台应用程序,实现Keysight数字万用表的电压测量,并将结果通过控制台展示;
  2)用C进行仪器控制系列数字万用表(2):该篇文章在第1篇文章的基础上,以窗体应用程序的形式重写了万用表电压测量程序,并能够自动识别仪器地址,以及能够通过按钮控制测量的开始和停止,电压的显示等。
  3)用C进行仪器控制系列数字万用表(3):该篇文章在第2篇文章的基础上,通过代码的简单优化,实现了不同测量类型的下拉选择,根据下拉选项执行对应类型的测量功能(电压、电流、电阻、二极管、导通、频率测试等)。
  此篇文章是在第3篇文章的基础上,添加波形图表显示功能。优化需求:添加波形图表显示功能,用以观测数据的变化趋势
  通过添加波形图表功能,将测量数据实时传递给波形图表,使其能够在界面中显示测量的历史数据,就可以观测到数据的变化趋势了。最终想要实现的效果如下图所示。
  需求实现效果优化实现过程
  1)窗体界面的优化从工具箱中找到VisualStudio自带的Chart图表控件,并将其拖拽至窗体面板中。
  Chart控件选中新添加的Chart控件,在其属性窗口中找到图表的Series属性,然后点击该属性右侧的3个小圆点组成的按钮进入Series属性设置页,如下图所示
  图表的Series属性修改数据序列的名称(Name)为Data,修改图表类型(ChartType)为Line,即修改图表类型为折线图显示。
  修改Series属性设置完图表属性后,调整窗体上相关控件的布局,调整后如下图所示。
  调整窗体布局
  2)代码优化
  主要涉及如下3块代码段的修改:在窗体的构造函数中增加曲线图样式的设置语句,包括曲线样式、曲线颜色的设置。publicForm1(){InitializeComponent();设置曲线图样式WaveChart。Series〔0〕。ChartTypeSeriesChartType。Line;WaveChart。Series〔0〕。ColorSystem。Drawing。Color。Blue;}在开始测试的事件响应代码段添加清除曲线代码,实现开始测试时重新绘图。if(btnStart。Text开始测试){btnStart。Text停止测试;清空曲线图数据WaveChart。Series〔0〕。Points。Clear();在测量线程代码段,增加将实时测量数据传递给波形图表的代码。循环读取万用表数据while(true){发送采集命令messageBasedSession。WriteString(:READ?,true);读取返回值stringresponsemessageBasedSession。ReadString();在控件和图表中输出结果this。Invoke((MethodInvoker)delegate{resultTextBox。TextChangeDataToD(response。Trim());WaveChart。Series〔0〕。Points。AddY(double。Parse(resultTextBox。Text));});}优化效果验证
  程序优化后的运行效果如下图所示,可通过下拉选择测量类型,实现不同的测试需求,然后通过TextBox显示控件和Chart波形图表显示数据。
  运行效果
  通过验证,可以完美的实现测量需求。
  附:本文中涉及到的完整源代码usingSystem;usingSystem。Resources;usingSystem。Windows。Forms;usingIvi。Visa。Interop;usingSystem。Threading;usingSystem。Linq。Expressions;usingSystem。Windows。Forms。DataVisualization。Charting;namespaceWinFormComPorts{publicpartialclassForm1:Form{privateIvi。Visa。Interop。ResourceManagerresourceManager;privateFormattedIO488messageBasedSession;privateThreadmeasurementThread;publicForm1(){InitializeComponent();设置曲线图样式WaveChart。Series〔0〕。ChartTypeSeriesChartType。Line;WaveChart。Series〔0〕。ColorSystem。Drawing。Color。Blue;}region端口号下拉选择框下拉事件响应代码summary端口号下拉选择框下拉事件响应代码summaryparamnamesenderparamparamnameeparamprivatevoidcboComPortsDropDown(objectsender,EventArgse){try{清除下拉列表this。cboComPorts。Items。Clear();获取设备的所有串口资源string〔〕comNamesSystem。IO。Ports。SerialPort。GetPortNames();添加可用串口号到下拉框中foreach(stringsincomNames){this。cboComPorts。Items。Add(s);}创建VISA资源对象实例Ivi。Visa。Interop。ResourceManagerrmnewIvi。Visa。Interop。ResourceManager();获取设备的所有仪器资源string〔〕usbNamesrm。FindRsrc(?INSTR);添加可用USB资源到下拉框中foreach(stringsinusbNames){if(s。Contains(0x))this。cboComPorts。Items。Add(s);}}catch(Exception){MessageBox。Show(系统内不存在此类仪器,ERROR);}}endregionregion开始测试停止测试按钮事件响应代码summary开始测试停止测试按钮事件响应代码summaryparamnamesenderparamparamnameeparamprivatevoidbtnStartClick(objectsender,EventArgse){try{if(btnStart。Text开始测试){btnStart。Text停止测试;清空曲线图数据WaveChart。Series〔0〕。Points。Clear();创建ResourceManager和MessageBasedSession对象resourceManagernewIvi。Visa。Interop。ResourceManager();messageBasedSessionnewFormattedIO488();打开万用表连接,万用表的USB通讯地址通过端口号下拉列表的值传递过来messageBasedSession。IO(IMessage)resourceManager。Open(cboComPorts。Text。ToString(),AccessMode。NOLOCK,5000,);获取测量类型,根据测量类型选择相应的采集指令stringConfigCommand;switch(cboMeasType。Text){caseDCVoltage:ConfigCommand:CONF:VOLT:DCAUTO,DEF;break;caseACVoltage:ConfigCommand:CONF:VOLT:ACAUTO,DEF;break;caseDCCurrent:ConfigCommand:CONF:CURR:DCAUTO,DEF;break;caseACCurrent:ConfigCommand:CONF:CURR:ACAUTO,DEF;break;caseResistance2wire:ConfigCommand:CONF:RESAUTO;break;caseResistance4wire:ConfigCommand:CONF:FRESAUTO;break;caseDiode:ConfigCommand:CONF:DIOD;break;caseContinuity:ConfigCommand:CONF:CONT;break;caseFrequency:ConfigCommand:CONF:FREQ;break;default:ConfigCommand:CONF:VOLT:DCAUTO,DEF;break;}设置采集模式和测量范围messageBasedSession。WriteString(ConfigCommand,true);创建线程执行连续测量measurementThreadnewThread(newThreadStart(MeasureThread));measurementThread。Start();}else{btnStart。Text开始测试;停止测量线程if(measurementThread!nullmeasurementThread。IsAlive){measurementThread。Abort();measurementThread。Join();}关闭连接if(messageBasedSession!null){messageBasedSession。IO。Close();messageBasedSession。Dispose();}if(resourceManager!null){resourceManager。Dispose();MessageBox。Show(资源释放);}}}catch(Exceptionex){MessageBox。Show(发生错误:ex。Message);}}endregionregion测量线程代码summary测量线程,读取万用表的数据,并将结果反馈至resultTextBox控件summaryprivatevoidMeasureThread(){try{循环读取万用表数据while(true){发送采集命令messageBasedSession。WriteString(:READ?,true);读取返回值stringresponsemessageBasedSession。ReadString();在控件和图表中输出结果this。Invoke((MethodInvoker)delegate{resultTextBox。TextChangeDataToD(response。Trim());WaveChart。Series〔0〕。Points。AddY(double。Parse(resultTextBox。Text));});}}catch(ThreadAbortException){线程被中断MessageBox。Show(线程被中断);查询错误messageBasedSession。WriteString(:SYST:ERR?);读取返回的错误信息stringresponsemessageBasedSession。ReadString();若仪器返回了410错误(读取万用表读数时被中断导致)或无错误,则忽略if(response。Contains(410)response。Contains(Noerror)){}else{MessageBox。Show(response);}}catch(Exceptionex){MessageBox。Show(发生错误:ex。Message);}}endregionregion数据显示格式转换代码summary将科学计数法表示的字符串数据转换为double型数据显示格式summaryparamnamestrDataparamreturns返回double型数据格式的字符串returnsprivatestringChangeDataToD(stringstrData){DoubledData0。0;if(strData。Contains(E)){dDataDouble。Parse(strData);}returndData。ToString();}endregion}}

速看!亚马逊日本站发布禁售最新政策!01hr近日,亚马逊日本站发布公告称,2023年3月27日起,日本站将更改受限产品帮助页面上的武器和类武器产品的上架政策。来源亚马逊官方根据公告显示,其他商品部分的禁售商品示例中将世界多地感受春的气息3月8日,日本东京,樱花提前进入盛开期。综合编译赵婷婷迟日江山丽,春风花草香,世界多地迎来春日美景。嫩绿的柳条粉红的桃花雪白的梨花一眼望去,就像一幅幅绚丽的水彩画。3月16日,西班5套白色西装简单搭配,可优雅能休闲,轻松穿出日常好看风格头条创作挑战赛如果你爱美喜欢各种搭配,又不知道从哪里入手。今天的文章就能带来思路。找到一件你喜欢的经典单品,最好是外套,然后以此为核心搭配,就能建立属于自己的风格。今天我想分享的就郑维新一个被开除的学生和他年仅22岁生命历程被学校开除不到三个月,郑维新中弹倒下,生命永远定格在22岁。他死后只留下一张照片。旧照中身着白衣戴着眼镜的青年棱骨分明,俨然一副知识分子模样。但凝重且坚毅的眼神,又隐隐透露着他对时中东国家中的另类,当地女孩热情开放,夜生活丰富程度不输泰国话说中东有很多的国家,存在一个奇葩的国度,国内美女出奇的奔放浪漫,夜生活特别的丰富,请问你们知道是哪里吗?(此处已添加小程序,请到今日头条客户端查看)这个特殊的中东国家,它叫黎巴嫩来自朝鲜的抗日英雄李红光,原名李弘海,出生于1910年,是朝鲜族。他出生在朝鲜一个贫苦的农民家庭,并于1925年迁至吉林省磐石县,之后于1926年在伊通县定居。在他的成长过程中,他亲眼目睹了日本帝国焦山上的楚长城头条创作挑战赛焦山焦山位于汝阳县王坪乡合村南面,焦山峰顶海拔1289米。宋朝年间,焦赞重修焦山寨,据此抵御侵略,保护家园,故名焦山。2013年5月12日,走遍汝阳老年登山队从合村下真有人在长城上刻到此一游?警方已行拘并罚款都说不到长城非好汉但是最近有个好汉上了长城却不太守规矩3月21日,有游客在八达岭长城旅游时,发现一男子竟在城墙上刻字。根据群众举报,延庆警方经过调查,将违法人员孟某某(男,35岁)关注课堂上,来了战斗英雄!文图王炜垄我去炸掉它,你们掩护!在95010部队的课堂上战斗英雄马国民讲起1979年的那场边境自卫反击战精神矍铄,声音洪亮仿佛又回到了硝烟弥漫的战场战斗英雄马国民讲战斗故事。传承战新款长城炮乘用版实车曝光,换装新前脸新内饰,车身加长6mm在去年12月份的工信部第366批新车申报目录中,长城汽车申报了中期改款的长城炮皮卡。近日,改款的长城炮乘用版实车曝光了,从实车来看,此次改款不仅是外观部分的调整,内饰则是经过了重新辽宁女色虎罗亚平贪1。45亿,让领导陪睡,出手百万逼情夫离婚引言贪欲,权欲和虚荣心,弄得人痛苦不堪,这是大众意识的三根台柱,无论何时何地,它们都支撑着毫不动摇的庸人世界。自从十八大以来,随着国家的反腐倡廉力度的加大,越来越多的贪官在国家的照
我们打了个盹,鬼子悄悄摸了上来(二)几天前看了司马南先生的一个视频,视频讲述了前云南教育厅前云南省政府参政督学某大学校长被抓一事。罗某某,作为一个政府高级官员,其不仅贪色贪权诋毁英烈却反而对日本赞美有加,称日军是一个是什么菜让慈禧一直吃到驾崩?历史开讲话说慈禧太后被尊称为老佛爷后更加的热衷于礼佛,除了平时吃斋念佛的日子外,每逢到了农历三月初三举办斋戒日。在这一天里,她要沐浴更衣,吃斋念经。刚开始由于慈禧太后平日里吃的都是逢考必拜文昌帝君,帝君故事知多少?每个故事都是一段人生缩影,点击关注,一起读故事,悟人生。文昌帝君,亦称文昌星或文曲星,又称梓潼梓潼帝君梓潼夫子文昌帝济顺王英显王雷应帝君瘟祖等。文昌帝君是掌管世间文运考试功名利禄的嫦娥其实不叫嫦娥,马桶最开始叫虎子,因何改名?再谈避讳历史开讲(本文的所有图片均来自互联网,如有侵权,请联系删除)(本文总计1800字,阅读完大概需要5分钟)上一辑,我们如匆匆过客般地讲述了一些避讳的故事,意想不到地收到一些朋友的反馈梁王沈法兴一代枭雄为何落得投江自杀的下场?源于南方割据众所周知,中国古代统一王朝的创始人大多由北方崛起,从而统一南北,建立大一统王朝。例如,西晋帝国以降南北分裂,北周兼并北齐,之后隋朝取代北周消灭了南陈,最终建立了统一王朝。反观南方,秦文公命天帝守卫秦国的北疆秦文公于公元前762年决定把秦国的都城从西部边陲的犬丘向东迁到汧水与渭水之间甘肃与陕西的交界,这里是先祖非子最初受命为周孝王繁育良马的地方,也是关中平原的西部起点,是秦国得以窥视广他潜伏台湾42年,新婚9天便与妻分别,70岁回到大陆才知儿孙满堂在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持1988年,一位潜伏42年满头银发的老人乘着游轮,回到了广东老家。42年将近半个为什么古代结婚第一夜叫入洞房?原来和古人的遭遇有关久汗逢甘雨,他乡遇故知洞房花烛夜金榜提名时并称为人生四大喜事,可见老祖宗对成亲一事的重视,不过为什么古代会把结婚的第一叫做入洞房呢?其中有什么寓意吗?为规矩自远古社会陋习在父系社会热门韩剧太离谱朝鲜国王穿帝服自称坐龙榻网友古代要被灭门这张截图来自于一部最近正在热播的韩剧从画面上可以看到,这名古代韩国的国王正穿着中国皇帝才有的平天冠和秦汉时期的宫廷服饰。中国网友曝光的这张图片背后,是这部热播韩剧堪称剽窃中国文化并(体育)田鹏飞庞俊旭止步斯诺克威尔士公开赛半决赛新华社伦敦2月18日电斯诺克威尔士公开赛两场半决赛18日先后举行,生涯首次闯入排名赛半决赛的两位中国选手田鹏飞庞俊旭不敌各自对手,未能再进一步,决赛将在米尔金斯与墨菲之间进行。两位唐太宗不为人知的八大罪状唐太宗李世民(599年1月23日649年7月10日),唐朝第二位皇帝(626年649年在位)。李世民于武德九年六月初四日(626年7月2日),发动玄武门之变,杀死太子李建成和齐王李
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网