.NET在Linux平台上开发串口功能

我们知道,.NET是跨平台的,可以运行在Windows、Linux、Mac上。但如果你在做工控方面的开发,你很快会发现,系统提供的SerialPort类,只能运行在Windows平台上。下面介绍.NET在Linux平台上完整的串口功能开发步骤。

一、在虚拟机上增加串口

如果你有一台带有串口的工控电脑,那这一部分的内容可以跳过。当然,为了调试方便,能在一台普通电脑上调试串口功能,也是很有意义的。

我们这里使用的虚拟机软件是VirtualBox,虚拟机安装Ubuntu系统,而外部的主机当然是Windows系统了。

1.1 主机安装虚拟串口

要在Windows系统上虚拟出串口,可以使用vspd软件。这不是本文的重点,在此不介绍,读者可以在网上搜索下载使用。

在这里,我们创建了COM1、COM2一对串口,将在下文中使用。

1.2 虚拟机安装虚拟串口

打开VirtualBox的系统配置页,切换到串口选项卡,如下图所示:

 在上面的配置中,端口编号是指虚拟机内的串口,在此示例中,我们选择COM1。端口模式选择主机设备,它相当于一个映射,把虚拟机内的COM1映射到主机,在下面的“路径/地址”中,我们填写COM1,就是虚拟机的COM1映射到主机的COM1。如果我们的主机不是Windows系统,而是Linux系统,那就要映射到/dev/ttyS0(相当于COM1)。

1.3 开始调试

1、在主机端,打开一个串口调试助手,打开COM2。

2、在虚拟机端,运行终端,先取得root权限(串口功能必须要root权限),然后输入以下命令:

echo "内容" > /dev/ttyS0

ttyS0指的就是COM1,ttyS1指COM2,依此类推。

3、这时候,我们在Windows端的串口调试助手可以发现收到消息了:

 

二、在.NET上开发串口功能

在写C#程序的时候,串口功能我们一般使用SerialPort类,但它是一个只能在Windows平台上使用的类。可以在NuGet中添加SerialPortStream包,这是一个支持多平台的串口处理包。

如果还是在Windows平台上,使用SerialPortStream类跟SerialPort类的代码几乎是一样的(把类名改一下,构造函数的参数顺序调一下),而且没什么额外的操作。但是在Linux平台上,需要先编译一个项目。由于Linux系统的差异性,对于串口操作,没办法做到统一。所以串口的底层功能,需要在特定的Linux系统上进行编译。

2.1 安装编译环境

下载代码需要git,编译需要gcc和cmake。如果已经安装,这一步可以略过。

sudo apt-get install git
sudo apt-get install gcc
sudo apt-get install cmake

2.2 下载和编译项目

这在SerialPortStream的说明文档里有介绍:

执行完上述步骤之后,会在serialportstream/dll/serialunix/build/libnserial目录下,看到如下的三个文件:

 

2.3 开发串口功能

 新建一个.NET工程,然后写下如下所示简单的示例代码:

Task.Run(async () =>
{
    try
    {
        SerialPortStream sps = new SerialPortStream("/dev/ttyS0");
        sps.Open();

        sps.Write("hello world");

        await Task.Delay(2000);

        sps.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
});

就是打开串口,然后发送一段字,再关掉。

2.4 发布和运行

编译上面的.NET程序,把它复制到Linux系统上。把2.2步产生的三个so文件,同样复制到程序的根目录下。

这时候,程序就可以像在Windows系统上那样运行了。需要注意的是,运行程序需要root权限

sudo dotnet myapp.dll

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .NET是一种跨平台开发框架,它可以在Windows、Linux和macOS等操作系统上运行。串口工具是一个基于.NET框架开发的软件工具,可以通过串口与其他设备进行通信。 此外,该串口工具还附带有源码,这意味着用户可以查看和修改软件的源代码。由于源码是开放的,因此用户可以根据自己的需求对软件进行定制和改进。例如,用户可以添加新的功能或优化现有功能,以适应特定的应用场景。 从开发者的角度来看,查看源代码也是一种学习和提高技能的方式。通过分析和理解其他人编写的代码,开发者可以学习到新的开发技术和方法,并在自己的项目中应用这些技术。 在源码的帮助下,用户可以深入了解软件的内部实现和运行原理。这有助于用户更好地利用软件功能并避免潜在的问题。此外,用户还可以利用源码实现自己的想法和创新,推动软件的发展和进步。 因此,.NET串口工具附带源码的做法是很有意义的,它为用户提供了更多的自由度和灵活性,同时也为开发者提供了更多的学习和交流机会。 ### 回答2: .NET 串口工具所附带的源码可以帮助开发者更好地了解串口通信的实现过程和原理,也能够方便地进行二次开发和定制化。通过阅读源码,可以深入了解串口通信的工作原理和协议规范,以及串口通信过程中可能遇到的常见问题和解决方法。此外,通过对源码的研究和修改,还可以实现个性化的串口收发控制方式、数据解析方式、错误处理方案等,从而更好地满足不同应用场景的需求。总之,.NET 串口工具附带的源码为开发者提供了一个很好的参考范例,帮助他们更快速、高效地开发出适应不同环境和需求的串口通信应用程序。 ### 回答3: .net 串口工具是一款开源的串口通信工具,它提供了一种简单、稳定并且易于使用的方式来进行串口通讯。该工具自带源码,允许用户进行二次开发和定制,以满足他们的实际需求。 该串口工具在设计时充分考虑了用户的使用体验和易于开发的特性。它提供了多种不同的功能,例如串口的波特率、校验方式等参数可自由调整,同时还支持数据发送和接收,并且能够以十六进制或ASCII码的格式显示数据。 开发者可以通过阅读和理解该工具的源码,了解其核心设计思路和实现方法,进一步理解串口通讯的原理和应用场景。同时,也可以在该源码的基础上进行二次开发,以适合特定的应用场景。 总之,.net 串口工具附带源码的特性使得其不仅仅是一款通讯工具,更是一种开源资源,允许用户在不断的实践和探索中不断完善并利用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值