用VISA工具驱动继电器外设
1、驱动方式:TCP
2、开发过程
第一步:外设识别
TCP方式将继电器插上网线后,并不能像串口一样自动识别到这个外设,需要手动连接。打开NI MAX后,右击设备与接口,然后点击新建,双击VISA TCP/IP Resource 用其中的方式之一连接。
第二步:代码调试,保证能上位机能控制继电器开闭
参考开始菜单-National Instruments-NI VISA下面的TCP/IP例程以及继电器产品资料,继电器遵循Modbus TCP协议,只要上位机往继电器发相应指令就可以进行控制。
首先进行初始化,在上位机和继电器之间建立一个连接,相关代码如下:
int CVICALLBACK Ready (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
SetCtrlVal (panelHandle, PANEL_LED, ); //(1)打开一个句柄
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
//(2)建立一个会话
status = viOpen (defaultRM, "TCPIP0::172.16.10.161::502::SOCKET", VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("An error occurred opening the session to TCPIP0::ftp.ni.com::21::SOCKET\n");
viClose(defaultRM);
exit (EXIT_FAILURE);
}
//(3)设置会话属性
viSetAttribute (instr, VI_ATTR_TCPIP_NODELAY, VI_TRUE); //viSetAttribute (instr, VI_ATTR_TCPIP_NODELAY, VI_TRUE); break;
}
return ;
}
然后根据厂家给出的相关资料往继电器中写指令,控制继电器开闭,相关代码如下:
int CVICALLBACK DO_0_Close (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
//(4)将数据写入到外设器件中
status = viWrite (instr, (ViBuf)CloseDO_0, , &writeCount);
if (status < VI_SUCCESS)
{
printf("viRead failed with error code %x \n",status);
viClose(defaultRM);
exit (EXIT_FAILURE);
}
break;
}
return ;
}
第三步:完善需要的功能
继电器开闭的时候上位机软件在测试信息打印窗口打印出日期和时间,循环次数,窗口信息以文本文档的的形式导出。
第四步:稳定性测试
第五步:美化界面。
3、一些问题
(1)测试信息打印窗口没有滚动条
在王建新的书上第三章开头有讲到,文本超出显示区域时能自动添加滚动条。但是需要进行设置。双击Text Box控件,在scroll bar处可设置。
总结:要灵活变通,不要一根经。在软件设计中,要求同时打开多个通道,但是编程不好实现,可以在硬件上进行改进将需要同时进行控制的设备并起来。
PS:过程中参考开始菜单-National Instruments-NI VISA下面的例程和帮助文档,以及相关资料编写软件。
用VISA工具驱动继电器外设的更多相关文章
- 远程控制工具&&驱动安装仍然没有声音
1. 2.下面是一个远程控制工具 TeamViewer
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-可以用软件自带NC工具驱动但是程序无法让电机转动怎么办
新建一个项目,当扫描的时候务必勾选YES,使用网上最新的XML文件 如果不使用,则有些设备可能被扫描出来是无效的(图标不正常) 如果完全删除XML描述文件,可能也能扫描出来,而且可以用Twin ...
- [转]以Facebook为案例剖析科技公司应有的工具文化
原文:http://36kr.com/p/146507.html 这是一篇几年前的文章,但对于没有涉及到工具文化这个概念的人来说,还是很新的. 前言 前段时间和大众点评的 CEO 张涛聊天的时候碰到内 ...
- 十天学会单片机Day0点亮LED (锁存器、三极管、继电器)
C51常用的数据类型 数据类型 关键字 所占位数 表示数范围 无符号字符型 unsigned char 8 0~255 有符号字符型 char 8 -128~127 无符号整型 unsigned in ...
- 12V继电器开关控制
案例描述:“灯控项目”中让单片机通过IO口控制继电器,继电器接入GPRS电路板供电电源,从而实现单片机对GPRS电路板的开关控制 电路图 所需元器件:1个五脚继电器,1个NPN三极管,2个电阻,1个二 ...
- 以Facebook为案例剖析科技公司应有的工具文化
http://www.36kr.com/p/146507.html 编者按:本文由 @王淮Harry哥 撰写,摘自他即将出版的新书.王淮是 Facebook 早期员工,中国藉第二位工程师第一位研发经理 ...
- 【NXP开发板应用—智能插排】3.驱动GPIO点亮外接LED
[前言] 首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提 ...
- linux驱动分层分离思想
转:https://blog.csdn.net/zqixiao_09/article/details/51088887 前面我们学习I2C.USB.SD驱动时,有没有发现一个共性,就是在驱动开发时,每 ...
- 使用C6748和C5509A对nRF24L01驱动进行数据传输
1. 写在前面 今天下午做了一个C5509A和C6748两个DSP的数据传输,经由RF24L01设备传输,都是模拟SPI协议,对于两个DSP来说,无非是配GPIO引脚,写好时序和延时.C5509A的G ...
随机推荐
- 预警| Confluence 高危漏洞被大规模利用,阿里云WAF接入即可防护,支持免费应急服务
2019年4月4日,阿里云安全应急响应中心监测到Confluence 官方发布安全更新指出,Widget Connector 存在服务端模板注入漏洞,攻击者能利用此漏洞实现目录穿越遍历甚至远程命令执行 ...
- css技巧:清除浮动
1.常用方法——overflow 给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容 ...
- 读取Excel文件的两种方法比较 以及用NPOI写入Excel
1. 采用NPOI方式,只需引用NPOI.dll,但目前最高只能到2.4.0版. 缺点:只支持.xls,不支持.xlsx格式.github上的2.4.1版支持.xlsx,但总提示缺ICSharpCod ...
- 2019-8-31-PowerShell-拿到最近的10个系统日志
title author date CreateTime categories PowerShell 拿到最近的10个系统日志 lindexi 2019-08-31 16:55:58 +0800 20 ...
- Gym - 101620H_Hidden Hierarchy(树+模拟)
Hidden Hierarchy 题目链接 题目描述 You are working on the user interface for a simple text-based file explor ...
- TensorFlow的 卷积层
用 TensorFlow 做卷积 让我们用所学知识在 TensorFlow 里构建真的 CNNs.在下面的练习中,你需要设定卷积核滤波器(filters)的维度,weight,bias.这在很大程度上 ...
- 一条数据的漫游 -- X-Engine SIGMOD Paper Introduction
大多数人追寻永恒的家园(归宿),少数人追寻永恒的航向. ----瓦尔特.本雅明 背景 X-Engine是阿里数据库产品事业部自研的OLTP数据库存储引擎,作为自研数据库POLARDB X的存储引擎,已 ...
- @总结 - 10@ Miller-Rabin素性测试与Pollard-Rho因数分解
目录 @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ @1.2 - 算法描述@ @1.3 - 算法实现@ @2 - 因数分解:Pollard-Rho算法@ @2.0 - ...
- [***]HZOJ 奇袭
C. 奇袭 题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上 要迎来最终的压力测试——魔界入侵. 唯一一个神一般存在的Administrator被消灭了,靠原 ...
- Mysql到Java数据类型映射的JDBC规范