一、简介
首先,介绍WPF工程做上位机之前。无法想像,做一件事情要多么细心、认真,并且要有条不紊的记录整个过程中遇到的问题。不然的话,你会发现,当你遇到问题遇到困难的时候,你根本无法解决,这时候,叫天天不应,叫地地不灵。你该怎么办呢?
然后,你该养成良好的思维习惯、笔记习惯,不断学习。才能在困难中行走。
最后,软件调试、硬件调试用到的收发系统:
二、WPF上位机与 大彩屏硬件通信
1、WPF上位机(你随便上位下载一个串口助手,就是一个上位机了。当然,你可以在开源网页获取开源代码,以便作为WPF上位机):
这里的发送指令,你只需把VisualTFT的指令助手中,即下面的代码指令,复制过来即可。这样上位机才知道要发给彩屏哪个页面ID以及哪个控件ID:
2、大彩屏硬件通信
硬件彩屏,请参考(虚拟彩屏与硬件彩屏,是等价的):
★★★串口通信★★★ WPF工程做上位机,利用串口通信协议的方式,与大彩屏幕进行串口通信
3、硬件彩屏只能发,不能收来自电脑WPF的上位的信息(这里的上位机==串口助手软件)
虚拟大彩屏的仿真,明明可以收发,但是换成了硬件大彩屏就不能收了。
虚拟大彩屏的仿真,明明可以收发,但是换成了硬件大彩屏就不能收了。
虚拟大彩屏的仿真,明明可以收发,但是换成了硬件大彩屏就不能收了。
这种问题怎么办么?这种问题类似于单片机与上位的通信中,单片机明明可以发,但是就不能收的问题。我们先回到彩屏问题吧,不要把心放在单片机了。
解决办法:
A串口助手<——>硬件彩屏
B串口助手<——>硬件彩屏
C串口助手<——>硬件彩屏
..........
无论是用什么助手,彩屏都只能发,不能收。说明串口硬件连接,这条路没有问题了(你可以用万用表排查)。
那么问题出现在哪?
那么问题出现在哪?
那么问题出现在哪?
想想就知道,利用排除法得知,必然是硬件彩屏本身的问题、或者是硬件彩屏的接收部分程序有问题。
如果你的程序是正确的,并且单步验证过每条指令、每条数据的正确性,确保没有问题。并且硬件电路用万用表检验过,确实没有问题。
那么问题又出现在哪?
那么问题又出现在哪?
那么问题又出现在哪?
哎呀,那就是你下载到板子的程序有问题,极有可能是接收部分的代码损坏了。我重新下载后,就解决了该问题。
整体分析,看起来简单,但是你没做过,你又怎么知道问题出在哪一步呢?
整体分析,看起来简单,但是你没做过,你又怎么知道问题出在哪一步呢?
整体分析,看起来简单,但是你没做过,你又怎么知道问题出在哪一步呢?
好了,我们回到单片机,若是单片机遇到同样的问题,你可以这样排查,看看时钟、中断等等是否有问题。
三、注意高八位、第八位
谁的高八位,由是谁的低八位呢?
我从指令助手里面,得到了大彩屏收指令的保存地址方式:
于是,我把这些指令分离出来:
你注意到了紫色这部分了吗?好了,我现在用C#表示行的变量a:
byte[] a = new byte[]{ 0x00 ,0x02 }
截图部分的指令:
byte[] t1 = new byte[] {
0xEE, 0xB1, 0x5B, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00,
0x0C, 0xD0, 0xAD, 0xD2, 0xE9, 0x31, 0x3B, 0xC3, 0xFB, 0xB3,
0xC6, 0x31, 0x3B, 0x00, 0x0C, 0xD0, 0xAD, 0xD2, 0xE9, 0x32,
0x3B, 0xC3, 0xFB, 0xB3, 0xC6, 0x32, 0x3B, 0xFF, 0xFC, 0xFF,
0xFF
};
若是你要把a赋值给byte[7]/byte[8],那么你必须把a的高八位先赋值给byte[7],即
byte[7] = a[1];
byte[8] = a[0];
如果你不单部执行,你就不会发现这些简单的错误。
四、读取文本控件、文本会返回当前
对于大彩屏,需要特定的指令读取文本控件的值,读完之后,返回一个指令。其他控件读、返回过程的原理是类似的。
彩屏指令的截图:
具体应用的截图(点击确认后,得到了 EE B1 11 00 03 00 08 11 31 31 31 31 00 FF FC FF FF 指令):
EE B1 11 00 03 00 08 11 31 31 31 31 00 FF FC FF FF 指令表示如下:
EE B1 11——头
00 03 00 08——画面ID、控件ID
11——文本控件
31 31 31 31——文本值
00——结束符
FF FC FF FF——尾
五、总结
1、必须了解串口的基本知识。
2、必须了解上位机的基本知识。
3、必须了解彩屏或单片机的基本知识。
4、不管你多少岁,做哪行业,必须养成良好的习惯、并且不断地学习,才能拥有良好的方法,以便解决任何问题。
5、WPF C#的上位代码,保存在GitHub.
6、彩屏工程,没有什么代码可言,都是界面、控件的方式。只利用它的指令助手即可。