当前位置:   article > 正文

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_mcgs串口收发数据实例

mcgs串口收发数据实例

写在之前

    第一次经历过一个软件不会用的懵逼状态后,慢慢静下心来,好好的看看这个屏幕到底怎么弄,经历过多方帮助,终于慢慢的领悟到了昆仑通态屏幕怎么制作,下面分享给需要用到的小伙伴。

语言

    还是那句话,自己理解之后,再用最简单的语言给大家表达出来,能理解就好。望不介意用词不准确的地方。虽然写文章需要用词严谨,但是这个不发表论文,就放松下对自己的要求,尽量准确。

第一步:写脚本

    希望看到的小伙伴不用心理抵触这个东西,开始我也挺抵触自己不会的东西,应该说是心理不舒服,可能是在自己的恐慌区,只想搞点自己熟悉的东西。但是最后发现一直搞一个东西挺没劲的,但是搞不熟悉的又有点恐慌,特别是搞不出来的时候,这个时候最需要静心,慢慢的一步一步的来。比如现在,我也TM的迷茫和恐慌啊!

     再次打开,设备名修改,高级。确定。

     点击采集脚本。删掉所有代码。

     点击设备通道,删除所有。

    右键设备通道,添加。感觉这点比较好,能用汉字,不用全部英文。

     同时添加全局变量,最后形成下面东西:

    最左侧,两个通道,一个全局变量。代码一定要规范,g代表globe,n代表整型。这个需要去买专门的书去看。前面我也贴过我自己的代码,里面全部都检查过,按照编码规则来的。至少看着舒服。 

     在采集脚本中,加入程序,代码如下:

  1. DIM gnGetData1 as INTEGER
  2. !GetIntChannelValueByName("取数", gnGetData1)
  3. !SetIntChannelValueByName("显示", gnGetData1)
  4. !Sleep(1000)
  5. DIM nSendByteArr(9) as BYTE
  6. DIM nRecvByteArr(9) as BYTE
  7. nSendByteArr[1] = &H5A
  8. nSendByteArr[2] = &HA5
  9. nSendByteArr[3] = &H03
  10. nSendByteArr[4] = &H04
  11. nSendByteArr[5] = !BitRShift(gnGetData1, 8)
  12. nSendByteArr[6] = gnGetData1
  13. nSendByteArr[7] = !BitRShift(gnGetData1, 8)
  14. nSendByteArr[8] = gnGetData1
  15. nSendByteArr[9] = !SvrByteArraySum(nSendByteArr,3,6)'和校验
  16. !DevClearBuff() '清缓冲
  17. !DevWriteAndReadByteArr(nSendByteArr,9,nRecvByteArr,9,通讯延时)

    按行数依次解释代码:

    定义变量gnGetData1;

    从“取数”通道取数放入gnGetData1中;

    将gnGetData1放入“显示”通道中

    延迟1s钟

    定义发送数组

    定义接收数组

    以下9行为数组赋值

    清缓冲

    发送“发送数组中的数据9个”并取回返回的9个数放入“接收数组中”。

     点击工具栏中叹号前面的对号按钮,检查语法。

    语法什么意思去帮助里面找,各个函数写的很清楚,会用就行。

     保存:

     到此,脚本驱动编写完成。

    注:保存位置:D:\MCGSE\Program\Drivers\用户定制设备\实例串口,其中实例串口文件夹自己建立的。其他的自己可以找找。

第二步:链接

    打开上节中建立的组态,上节中只建立了一个用户窗口,用户窗口中建立了两个对话输入框。

     关闭这个窗口,回到原始位置,点击设备窗口:

     双击设备窗口,进入界面:

     先添加通用串口父设备,点击设备管理,添加刚才保存的用户定制设备用的,取数显示设备,至于名字为啥没改,我也不知道,反正看是刚才保存的脚本驱动。

      确定后,点击刚才新添加的“取数显示设备”,自己就会跑到刚才添加的父设备下面。

     双击加入的脚本驱动,选择通道连接:

     至此,驱动已经添加完毕。还有个就是串口号,这个是需要自己看看自己的串口是哪一个,然后再父设备里面修改,这个就不介绍了。

    注:此时什么通道啥的,应该还是一脸懵逼状态,为啥这样设置,最后再说这个问题。(这个很关键)

第三步:显示

    保存后,回到用户窗口,双击自己的工程,显示上节设置的两个对话框

     双击输入框,选择操作属性,里面有个对应数据对象的名称,可写,可选。写入:取数。另一个输入框,按照同样的步骤,写入显示。

    至此,界面已经做完,脚本也已经加入。

    点击工具选项,选择下载配置,出现以下画面:

     点击工程下载,就将刚才的工程下载到模拟环境中去了。也就是代替屏幕的那个东西。

     出现绿色的提示,如果是其他颜色请检查自己哪里做忽视了。

    点击启动运行。

 

     在第一个框里写数字,第二个框延迟后显示。

     同时连接串口,看到354的十六进制在数据里面:0162

            至此,取数显示,并通过串口传出完成。可以看出每次发送间隔1200ms。这个1000是监本程序里面sleep的1000,另外还有200ms,是写脚本的时候这个地方设定的。设备属性,通讯延时。串口发送指令里,包含了通讯延迟,所以每次间隔1200ms。

 第四步:解释

     现在看看刚才的步骤:脚本,界面,下载,模拟,运行。这五个步骤,缺一不可。

     回头复盘:

     (1)写脚本,设定通道;也就是黑盒子的输入口(后面的取数),输出口(后面的显示和串口)。

    (2)设置界面,加入脚本。此时脚本中的参数仅仅是个入口参数,并没有链接到界面中。双击脚本驱动后,将显示和取数分别对应到显示和取数,就将脚本的入口和界面相连了。

    (3)界面中两个输入框,分别设置为显示和取数,正式将脚本中的参数入口链接到界面中的输入框。

    注:驱动中的显示和取数是脚本的入口,驱动设置的对应显示和取数是界面对应的参数,这个是可以变的。

      也就是这个里面前面的取数和显示,对应的是界面中参数,随便修改。后面的取数和显示是脚本中的,只能修改脚本中通道名称,这两个才会修改。用程序的叫法:形参入口。

    顺序:界面---实参--形参---脚本---输出(界面实参和串口)

复盘顺序问题

     这个编程顺序很奇怪,先编写脚本,定义好变量,然后传递到界面窗口,界面窗口再利用脚本中的变量。反正第一次见这样的屏幕。以前用过西门子的屏幕,到之后的串口屏,都没有这样编程的。这个也就是嵌入式屏幕的门槛吧,所以网上教程很少。

写到最后

     这两篇文章先制作最简单的东西,等接着做下,会插入按钮啥的,等我一个一个试出来之后再写下一篇介绍,希望小伙伴们能耐心等待,也希望有做这个东西的小伙伴关注,以后的文章会继续更新。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/993709
推荐阅读
相关标签
  

闽ICP备14008679号