C#实现串口通信界面
后续想用unity实现软硬件串口通信,先尝试在Rider中C#实现一个串口通信的界面
安装 .NET Framework
在Rider创建项目的时候会发现,有两栏
一栏是 .NET Core,一栏是 .NET Framework
下面大致讲一下它们的差别
前者完全开源,跨平台,没有designer设计界面
后者基于微软,针对Windows,有designer设计界面
之前学习C#是用的 .NET Core,界面开发用 .NET Framework比较方便,有designer
开始安装 .NET Framework,安装链接:https://dotnet.microsoft.com/zh-cn/download/dotnet-framework
选择开发者工具版,一键安装,安装路径如下,安装后可以查看是否安装成功
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework
安装完成之后最好重启一下电脑,不然Rider可能识别不到
重启后在Rider中创建项目,选择 .NET Framework,
选择Type>Windows Forms Application
选择Framework>你刚刚安装的版本
修改项目名、路径创建即可
(System.Threading这个命名空间是 .NET Framework4.0后才有的,版本太低可能创建工程后会报错)
代码实现
C#串口通信主要用到了SerialPort,在System.IO.Ports命名空间下
SerialPort在 .NET Framework中自带了,在 .NET Core开发可能要用NuGet安装一下
NuGet是用于.NET开发平台的软件包管理器,我们需要的包可以在这里下载
在Rider使用NuGet,可以参考官方教程:https://www.jetbrains.com/help/rider/Using_NuGet.html
简单来讲:Alt+7,查找、安装
QT也有类似designer的设计界面,但是以往我都是用代码实现
这是第一次接触designer,还是挺方便的
界面开发参考的是一篇用VS实现的博客,讲的挺详细的
链接:https://blog.csdn.net/ba_wang_mao/article/details/113642066
记录一些自己开发过程的笔记:
1.控件事件代码会自动生成抛出异常代码,需要删掉
throw new System.NotImplementedException();
2.下拉框用ComboBox实现,Rider默认是没有显示这个控件的,要在右上角Manage Components设置
3.在界面加载时列举电脑的串口,实现如下,其中也包含了string[]转object[],当然不转也没什么问题。
SerialBox.Items.AddRange(SerialPort.GetPortNames().ToArray<object>());
4.SerialPort使用参考官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport
5.发送和接受文本框采用TextBox,需要设置多行Multiline和竖直翻滚ScrollBars>Vertical
6.接受要注册事件,直接+=函数名
_serial.DataReceived += ReceiveData;
总的开发过程还是和QT很像的,最终实现效果如下:
测试是用一个接受串口数据将原数据发送出来的单片机,收发无误。