(这是上篇文章的labview程序
串口接收示例2.rar)
现在把它改成这样(其中的两个字符串函数在字符串选板里):
然后把前面板的接收数据的宽度调整为100个字符的宽度,于是,每当你的单片机发送1K的图像数据时,他就能正确的把它找到并显示在数据接收的方框内。 程序如下
http://download.intelligentcar.cn/bbsupfile//superyongzhe/
这一篇又结束了,通讯协议还有很多内容,无论实现多么复杂的功能,都是在这个基础上增加的。至于能弄成什么样,就是仁者见仁,智者见智了。但通讯协议的关键在于告诉数据的起始位置和数据的大小(我们这里只有单片机和上位机通讯,所以不牵扯数据要发送到哪,从何而来的问题)。下一篇就告诉大家如何来把图像数据显示成画面,弄得更好看一些吧。不
过到此为止,你应该已经可以把单片机传来的数据正确的找到并且显示在电脑上了,下面的仅仅是些锦上添花的东西,关键的技术到此为止已经差不多了。
图形绘制
今天应该是讲到这个教程的最后部分了,有人看了肯定会觉得才写了这么点就没了。对这个教程,我在一开始写的时候就就是以简单为主,告诉大家如何入手labview。我学这个也没多久,像内存优化之类的高级功能还不熟悉,多进程也只是用了点皮毛而已。而且,这个车上位机软件编写还需要根据你的车上的程序和实际需要来修改,我这里只是讲述如何编写通用的上位机软件,也就是说你想编这个上位机软件时肯定会用到的技术,至于那些比较花哨的东西(比如改背景)可以不要,所以全部省掉。
罗嗦了这么多,下面进入正题吧。在上篇中,我们拥有了一个简陋的通讯协议,在单片机上我们发送字符串“image”然后发送一个固定长度的图片,从左到右从上到下一次发送每个点的灰度值,而且这个灰度值的长度是固定的10*100。对于labview,每次收到的是4096个字节的字符串,从中搜索到“image”,然后把后面的10*100个字符串取出来,上位机就得到图像数据了。最后把这些数据用字“符串显示控件”显示出来,而且要把“符串显示控件”拖到合适大小才行。
现在呢,我们要把这个些图像数据显示成图像该怎么办呢?原因不说了,见步骤:
(1)把这些字符串转化成“无符号字节数组”。
编程面板:编程->字符串->字符串/数组/路径转换-> “字符串至字节数组转
换”
(2)上面得到的是一位数组,下面把它转化成10*100的二维数组。 编程面板:编程->数组->“转换数组维数”
(3)平化像素图
编程面板:编程->图形与声音->图形格式->“平化像素图”
(4)绘制平滑像素图
编程面板:编程->图形与声音->图片函数->“绘制平化像素图” 编程面板:编程->簇/类/与变体->“按名称捆绑”
(5)右边接入图片控件,就可以显示了。