序言完全就是个人回忆录,不想看可以跳过
最近想发一个之前自己做的一个简单的串口上位机,当然,工作时写的要比这个复杂了。除了C#可以写上位机,我同事也有用QT的,具体的哪个好不做评判。第一次接触C#还是从我实习的时候才认知到C#原来这么好用。之前我写上位机写的还都是安卓上位机,主要用于蓝牙或者WiFi的远程调试用(其实最主要的原因是大学时参加省物联网大赛败在没人写安卓上位机上。。。)。
必要准备
我用的是微软的Visual Studio,2019版本的。开发语言用的C#。开发的时候有两个版本可以选择,一种是WindowsForm、另外一种是WPF。个人推荐,新手使用WindowsForm版本的,因为这个上手容易。熟悉以后就选择WPF版本的开发,性能更高且自定义更强。
本次介绍的就是我最开始写上位机的时候接触的WindowsForm版本的。
主界面
先给大家展示一下程序的主界面,由成果展示功能。还是中规中矩的一个发送框跟一个接收框。从这个界面就可以知道我又多加了一些偷懒的方法。
1、有的时候我发送了什么东西我不需要显示,我只要显示我接收到的东西的就OK,于是这就有了左上角的第一个选择框;
2、有的时候我对某些帧的数据是需要知道接收或者发送的时间的,这时候就有左上角第二个选择框;
3、常常在调试单片机的时候发送或者接收的它不是字符串,而是HEX格式的文件,这时候就有第三个选择框了(这个框选择以后会自动将发送框里的字符串改为hex格式哦);
4、在调试某些模块的时候常常需要在字符串后加 \r\n,每次都要输入一下,这样非常的不方便,于是乎,我决定再添加上第四个选择框来干这件事。
5、虽然基本功能都有了,但每次我从底下的发送框输入字符串以后,还需要我再把我的手从键盘上拿开,移动鼠标去点击发送数据按钮,这样非常的麻烦。于是乎,第五个选择框它来了,把它勾选上以后在发送框直接点击回车即可完成数据发送操作(写字符串时的回车键还是保留了的只不过是ctrl+回车)。
6、万一,我接收到一些重要的内容需要保存起来,这时候点击导出数据按钮即可将接收到的文本保存为txt文件(可以自定义文本名称和路径哦!),当我第二次想保存的时候选择的是同一个文件,那么它不会删掉之前的内容,会在文件后进行追加保存。
7、除了将接收到的文本进行保存这一功能,同时也借鉴了一下其他的串口上位机对要发送的数据进行保存,就比如之前我在调试一个4G模块的时候,里面的初始化指令还是挺多了,然后外加一些打电话或者发短信的指令又或者进行TCP通信时的指令。。。。啧啧啧,这些我总不能全手敲输入吧,于是我又添加上了XML文件读写。没有xml文件时会在根目录下自动创建并初始化一个xml文件,等待程序关闭时则会将发送文本框的内容进行保存操作,下次打开则会进行读取操作。
推荐代码
其中我比较满意的一个功能就是,自动缩放功能;这里给大家分享一下,采用的递归方法将每个控件下的子控件也进行比例缩放。其中Form1_Load在窗体打开的时候调用,Form1_Resize在窗体大小改变时调用。
float X;
float Y;
private void Form1_Load