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

写在之前

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

语言

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

第一步:写脚本

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第1张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第2张图片

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

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

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第3张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第4张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第5张图片

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

DIM gnGetData1 			as INTEGER

!GetIntChannelValueByName("取数", gnGetData1)
!SetIntChannelValueByName("显示", gnGetData1)

!Sleep(1000)
DIM nSendByteArr(9) 	as BYTE
DIM nRecvByteArr(9) 	as BYTE

nSendByteArr[1] = &H5A	
nSendByteArr[2] = &HA5		
nSendByteArr[3] = &H03		
nSendByteArr[4] = &H04
nSendByteArr[5] = !BitRShift(gnGetData1, 8)
nSendByteArr[6] = gnGetData1
nSendByteArr[7] = !BitRShift(gnGetData1, 8)
nSendByteArr[8] = gnGetData1
nSendByteArr[9] = !SvrByteArraySum(nSendByteArr,3,6)'和校验		

!DevClearBuff()         '清缓冲 

!DevWriteAndReadByteArr(nSendByteArr,9,nRecvByteArr,9,通讯延时)

    按行数依次解释代码:

    定义变量gnGetData1;

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

    将gnGetData1放入“显示”通道中

    延迟1s钟

    定义发送数组

    定义接收数组

    以下9行为数组赋值

    清缓冲

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

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

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

     保存:

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第6张图片

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

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

第二步:链接

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第7张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第8张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第9张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第10张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第11张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第12张图片

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

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

第三步:显示

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第13张图片

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

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

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第14张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第15张图片

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

    点击启动运行。

 昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第16张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第17张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第18张图片

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第19张图片

 第四步:解释

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

     回头复盘:

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第20张图片

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

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

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

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

昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)_第21张图片

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

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

复盘顺序问题

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

写到最后

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

你可能感兴趣的:(屏幕,嵌入式,串口通信)