从零编写上位机(3)

2019-09-01 10:15

在while方框上出现了两个三角形的符号,这就是移位寄存器。移位寄存器的意思大概是把一次循环中计算的数据放在右边的那个三角形里,在下一次循环时,从左边的那个三角形里取出来进行运算,其实就跟C语言里的变量类似,通过这种方式我们可以把上一次循环中的数据用在下一次循环中(我讲的不是很准确,应该就是这么用吧。其实还有其他方法,也可以使用局部变量实现这个功能)。

再介绍一个函数--“连接字符串”,位置如下

下面我们就把它连接成下面这个样子

这样就可以把从串口接收到的数据完整的显示出来了,前面板如下

至于我给的那个程序里面的if结构的用法,就更简单了,使用“ctrl+H”看看帮助就知道了,其实这个功能要不要无所谓。为了使我们这个程序尽可能简单,暂时我就不介绍这个了。

通讯协议

说到通讯协议,这么“大”的一个词,这会不会很难啊?。其实不用怕,通俗的讲,通讯协议就是通讯双发的一种约定,可以简单,也可以复杂。复杂的有TCP/IP协议,简单的有串口通讯协议。我们现在要把图像从单片机发送给上位机,也需要通信协议。 如果没有通讯协议,对于收信方,谁知道你发的是什么?就是一堆二进制码元(对于数字通信系统),

他到底是干什么的?什么意思?根本无法知道。所以通信的双方要对发送的信息有所预定。

对于我们的赛车和上位机软件之间的通信,赛车通过串口发送图像数据,假设是一个100*10(字节)的图像,上位机软件接收到这1K的数据后把它绘制成相应的图像。可是从我的前几篇叫程中所说的来看,上位机软件接收的就是一些字符串,每次4096个字节,他怎么知道图像从哪里开始,从哪里结束呢?如果我们在单片机上就不停的发送图像,对于上位机来说,很显然根本无法知道从那里开始是我们所需要的一副图像。为此我们就需要做一定的约定,让上位机知道图像从什么地方开始。

为此,我们可以在发送图像的时候发送一个标志字符串,比如“image”。当单片机发送图像时,先发送“image”,然后紧接着发送1K的图像,这样不断重复。那么上位机软件每次接收到到4096字节数据时从里面搜索字符串“image”,如果搜索到了,就把这后面的1k数据当作图像绘制在电脑上。这就是我们的通信协议,很简单吧!你会想这也叫通讯协议?它的确可以称之为通讯协议了,只不过很简陋,没有TCP/IP那样好听的名字。

现在具体说一下我们的通讯协议,那就是:这是一个单向协议,只负责单片机向上位机发送数据;单片机在每次发送数据前,发送一个标志字符串,同时保证在要发送的数据中不会存在与标志字符串相同的数据,提前约定数据的长度(在我们前面的假设中,固定是1k,实际使用时可以更改);上位机接收时,通过搜索标志字符串,把标志字符串之后约定长度的数据取出来。

好了,下面开始正式行动吧! 在单片机里编写

main() {

while(1) {

printp(“image”); 。。。发送1k的图像数据; } }

在labview里 上一篇中是这样的


从零编写上位机(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:六年级下册字词读音

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: