mcgsmcgs 采集周期到的字符串怎么存储

MCGS问题集锦_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MCGS问题集锦
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢& & & & 以前第一次接触MCGS的时候,是因为北京昆仑通态的触摸屏。在开始要求上下位机进行通信的时候,主要是与单片机---ARM进行串口的数据交换---主要实现----触摸屏发送指令去控制外围设备----同时从下位机返回采集到的数据。
& & & & 在网上找了很久的资料,也看了MCGS自带的帮助文档,但是都没有通信成功。后来在一个博客上&/archives/1570&看到版主介绍他的方法,是采用Modbus与单片机完成了通信----通过一段时间的学习与请教,也完成了通信-----但是后来我在进一步学习MCGS中发现这种方法太麻烦,首先它在单片机中的代码实在太多,就为了实现几组数据的交换,基本上单片机都在处理通信交换。
& & & 后来在阅读了MCGS的帮助后,了解到MCGS的脚本开发工具可以实现MCGS的通信,可是说起来容易,做起来难,虽然按照它的介绍一步步完成,可最后还是只能接受数据,不能发送指令,当时自己脑袋都大了。还好功夫不负有心人,最后还是成功了,在成功之后,站在一个了解基本内容的角度,反过来看自己当初作为一个初学者,一个完全不懂的人,如今的简单易懂在当初就是丈二和尚。
& & 所以在这里简单介绍一下脚本代码------注意这里现在只是代码------时间问题------以后会将如何自动生成代码介绍的。
------------------------------
这是脚本开发工具------------
----------------------------------------------
代码如下-----------------------------现在只看代码就只需要注意红色部分------------------------------------
'———————————————————————
'驱动脚本:采集函数脚本,MCGS将定时调用这个函数
'这个函数需要完成从设备获取数据,并将数据根据协议
'进行解析,最后赋值到相应通道上的功能。
'这部分是注释,请在下面编辑采集脚本的内容:
'———————————————————————
'定义通道索引变量
DIM nIndex as INTEGER '当前回收数据解析通道的偏移索引
DIM nChlIndex as INTEGER '当前回收数据解析通道的起始索引
'定义ASCII协议格式命令收发帧使用变量
DIM strSend as STRING '存放发送命令字符变量
DIM strRec as STRING '存放接收命令字符变量
DIM strTmp as STRING '临时字符变量
DIM strData as STRING '
’下面红色的9个变量代表将要从组态传递9个数据----也就是指令------如果需要增加或者减少指令---可以相应增加减少----同时需要相应修改后面数据---
DIM str1 as STRING
& & & &'接收从组态中传递的变量值
DIM str2 as STRING & & & &'接收从组态中传递的变量值
DIM str3 as STRING & & & &'接收从组态中传递的变量值
DIM str4 as STRING & & & &'接收从组态中传递的变量值
DIM str5 as STRING & & & &'接收从组态中传递的变量值
DIM str6 as STRING & & & &'接收从组态中传递的变量值
DIM str7 as STRING & & & &'接收从组态中传递的变量值
DIM str8 as STRING & & & &'接收从组态中传递的变量值
DIM str9 as STRING & & & &'接收从组态中传递的变量值
DIM nReturn1 as INTEGER '函数返回判断标志(str是否接收到字符串)
'定义HEXE协议格式命令收发帧使用变量
dim SendByteArr(0) as byte '存放发送命令字节数组
dim RecByteArr(0) as byte '存放接收命令字节数组
dim DataByteArr(0) as byte '存放解析数据临时字节数组
DIM nReturn as INTEGER '函数返回判断标志
DIM nTmp as INTEGER '开关型临时变量
DIM 数值数据 as SINGLE '解析数值型数据,对数值型通道赋值
DIM 开关数据 as INTEGER '解析开关型数据,对开关型通道赋值
nIndex = 0
nChlIndex = 0
‘请注意---这是与前面9个变量相对应的----其中CT*是在组态中定义的数据---其作用就是将组态中定义的CT*数据传到前面定义的9个变量值中-----这九个变量值将在后面使用------------
nReturn1=!GetStrDataValueByName (&CT1&,str1)'设备地址1-组态中的变量
!GetStrDataValueByName (&CT2&,str2)
!GetStrDataValueByName (&CT3&,str3)
!GetStrDataValueByName (&CT4&,str4)
!GetStrDataValueByName (&CT5&,str5)
!GetStrDataValueByName (&CT6&,str6)
!GetStrDataValueByName (&CT7&,str7)
!GetStrDataValueByName (&CT8&,str8)
!GetStrDataValueByName (&CT9&,str9)
'------------------第0帧收发脚本--------------------
strTmp = &0& + !I2Hex(设备地址)
strTmp = !right(strTmp,1)
'strSend = &&##& &+ strTmp + &&&&
’注意下面----strSend=后面的一段代码表示将前面接收到的9个变量转化为字符串-----这里是----##**------数字随意说的----要根据你组态中将对应的CT*数据设为多少----
if nReturn1=0 then strSend =&##&+ !trim(str1)+!trim(str2)+ !trim(str3)+ !trim(str4)+ !trim(str5)+ !trim(str6)+ !trim(str7)+ !trim(str8)+!trim(str9)+&**&
'发送和接收数据按如下方式:
'!DevReadStr(strRec,60,通讯延时)
'if !strComp(strSend,&##**&)=0 then !DevWriteStr(strSend)
nReturn = !DevWriteAndReadStr(strSend,strRec,60,通讯延时)
if nReturn & 60 then
!SetIntChannelValueByName(&通讯状态&,2)
‘下面表示接收8个数据回组态----其实当你与单片机进行通信时,就是简单的数据通信,比如232---485--等,发送的就是一串字符---比如---然后你要确定你的数据格式--比如每4位表示一个数据----你要接受的就是1234--------------当然下面是7个字符表示一个数据------自己可以根据需要修改!
'解析回收数据,并设置通道值
nIndex = 0
while nIndex & 8
strTmp = !mid(strRec,nIndex*7+3,7)
数值数据 = !Val(strTmp)
开关数据 = 数值数据
!SetSingleChannelValueByNum(nIndex+nChlIndex+2,数值数据)
nIndex = nIndex + 1
nChlIndex = nChlIndex + nIndex
!SetIntChannelValueByName(&通讯状态&,0)
------------------------------
编译通过后生成---mdr文件
-----将他放在MCGS安装目录下的驱动文件夹中----比如----
----然后再组态的设备窗口中添加设置-----
----------------------------------最后简单通信效果------
1.组态发送的指令-----我这里的指令时自己添加了个数的---
2.串口助手模拟采集数据发送给组态
3.组态接收到串口助手发送的字符串---每7位代表一个数据
4----------------------
5---------------
最后再次将源码贴出---------------
'———————————————————————
'驱动脚本:采集函数脚本,MCGS将定时调用这个函数
'这个函数需要完成从设备获取数据,并将数据根据协议
'进行解析,最后赋值到相应通道上的功能。
'这部分是注释,请在下面编辑采集脚本的内容:
'———————————————————————
'定义通道索引变量
DIM nIndex as INTEGER '当前回收数据解析通道的偏移索引
DIM nChlIndex as INTEGER '当前回收数据解析通道的起始索引
'定义ASCII协议格式命令收发帧使用变量
DIM strSend as STRING '存放发送命令字符变量
DIM strRec as STRING '存放接收命令字符变量
DIM strTmp as STRING '临时字符变量
DIM strData as STRING '
DIM str1 as STRING & & & &'接收从组态中传递的变量值
DIM str2 as STRING & & & &'接收从组态中传递的变量值
DIM str3 as STRING & & & &'接收从组态中传递的变量值
DIM str4 as STRING & & & &'接收从组态中传递的变量值
DIM str5 as STRING & & & &'接收从组态中传递的变量值
DIM str6 as STRING & & & &'接收从组态中传递的变量值
DIM str7 as STRING & & & &'接收从组态中传递的变量值
DIM str8 as STRING & & & &'接收从组态中传递的变量值
DIM str9 as STRING & & & &'接收从组态中传递的变量值
DIM nReturn1 as INTEGER '函数返回判断标志(str是否接收到字符串)
'定义HEXE协议格式命令收发帧使用变量
dim SendByteArr(0) as byte '存放发送命令字节数组
dim RecByteArr(0) as byte '存放接收命令字节数组
dim DataByteArr(0) as byte '存放解析数据临时字节数组
DIM nReturn as INTEGER '函数返回判断标志
DIM nTmp as INTEGER '开关型临时变量
DIM 数值数据 as SINGLE '解析数值型数据,对数值型通道赋值
DIM 开关数据 as INTEGER '解析开关型数据,对开关型通道赋值
nIndex = 0
nChlIndex = 0
nReturn1=!GetStrDataValueByName (&CT1&,str1)'设备地址1-组态中的变量
!GetStrDataValueByName (&CT2&,str2)
!GetStrDataValueByName (&CT3&,str3)
!GetStrDataValueByName (&CT4&,str4)
!GetStrDataValueByName (&CT5&,str5)
!GetStrDataValueByName (&CT6&,str6)
!GetStrDataValueByName (&CT7&,str7)
!GetStrDataValueByName (&CT8&,str8)
!GetStrDataValueByName (&CT9&,str9)
'------------------第0帧收发脚本--------------------
strTmp = &0& + !I2Hex(设备地址)
strTmp = !right(strTmp,1)
'strSend = &&##& &+ strTmp + &&&&
if nReturn1=0 then strSend =&##&+ !trim(str1)+!trim(str2)+ !trim(str3)+ !trim(str4)+ !trim(str5)+ !trim(str6)+ !trim(str7)+ !trim(str8)+!trim(str9)+&**&
'发送和接收数据按如下方式:
'!DevReadStr(strRec,60,通讯延时)
'if !strComp(strSend,&##**&)=0 then !DevWriteStr(strSend)
nReturn = !DevWriteAndReadStr(strSend,strRec,60,通讯延时)
if nReturn & 60 then
!SetIntChannelValueByName(&通讯状态&,2)
'解析回收数据,并设置通道值
nIndex = 0
while nIndex & 8
strTmp = !mid(strRec,nIndex*7+3,7)
数值数据 = !Val(strTmp)
开关数据 = 数值数据
!SetSingleChannelValueByNum(nIndex+nChlIndex+2,数值数据)
nIndex = nIndex + 1
nChlIndex = nChlIndex + nIndex
!SetIntChannelValueByName(&通讯状态&,0)
-------------------------------手上有几块9成新的昆仑通态的触摸屏----------打折处理-------有需要可以留言----
------------------------------------------
--------------------------------
------------------------------
------------------------------------------详细内容还待完善,有需要的朋友可以留言!---------------------------
本文已收录于以下专栏:
相关文章推荐
STM32的使用有利有弊,
最近使用MCGS时候,在自己编写脚本驱动的时候,发现复制的脚本驱动在其他计算机上提示加载向导信息失败。开始还以为是软件版本问题,测试几次都没解决,后来去仔细研究了一下使用守则,找到一个简单方法。
  ...
MCGS编程过程中,希望在程序运行过程中改变某个变量的初始值,使其在下次启动的时候自动为上次掉电前的值。它的手册上写的是需要勾选&退出时,自动保存当前值为初始值&。但是我发现这个选项为灰色,不能选择。...
自己一直在用VB编写一些小程序,最近突然遇到一个问题,就是不能加载MSCOMCTL.OCX提示。于是上网查询资料,看到许多说法,和解决方法,但是感觉很多基本不能解决,就只能自己总结网上零星资料,摸索试...
* USB NUC501 driver
* Features:
When probe, URBs in the urb pool are alloce...
一个字符设备驱动通常会实现常规的打开、关闭、读、写等功能,但在一些细分的情境下,如果需要扩展新的功能,通常以增设ioctl()命令的方式实现,其作用类似于“拾遗补漏”。在文件I/O中,ioctl扮演着...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)【图文】第七讲 MCGS_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第七讲 MCGS
大小:933.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 存储过程字符串拼接 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信