1. 程式人生 > 其它 >linux系統使用C#程式設計操作串列埠(.net6)

linux系統使用C#程式設計操作串列埠(.net6)

環境介紹
linux系統: Ubuntu 22.04
IDE: VS2022 Preview 17.3.0

1.新建專案

2.開啟NuGet包管理器

3.搜尋並安裝 flyfire.CustomSerialPort 擴充套件包

這個擴充套件包用於串列埠類在linux環境下執行
3.x版本移除SerailPortStream類庫
使用SerialPort基礎類庫
也就是說3.x版本不在需要到linux環境下編譯依賴庫了,後面直接生成釋出就能執行

4.C#程式碼

點選檢視程式碼
using System.IO.Ports;

namespace ConsoleApp_linux
{
    internal class Program
    {
        static SerialPort serialPort = new SerialPort();

        static void Main(string[] args)
        {
            
            serialPort.PortName = "/dev/ttyACM0";   //串列埠名
            serialPort.BaudRate = 9600;             //波特率
            serialPort.Parity = Parity.None;        //無校驗
            serialPort.StopBits = StopBits.One;     //停止位
            serialPort.DataBits = 8;                //資料位

            serialPort.DataReceived += SerialPort_DataReceived;

            serialPort.Open();
            Console.ReadKey();
        }

        private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            System.Threading.Thread.Sleep(50);
            byte[] b = new byte[100];
            string c;
            serialPort.Read(b, 0, b.Length);
            c = System.Text.Encoding.ASCII.GetString(b);
            Console.WriteLine(c);
        }
    }
}

5.編譯程式碼

6.釋出







點選顯示所有設定

部署模式選擇獨立
目標執行時選擇linux-x64
點選儲存-釋出

7.在Ubuntu上安裝.net6 SDK

將 Microsoft 包簽名金鑰新增到受信任金鑰列表,並新增包儲存庫。
wget https://packages.microsoft.com/config/ubuntu/21.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
安裝 .NET SDK,請執行以下命令:
sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-6.0

參考
https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu

8.複製生成的資料夾到Ubuntu

9.開啟資料夾進入終端

執行以下命令

dotnet ConsoleApp_linux.dll

成功接收到串列埠裝置傳送來的資料

感謝擴充套件包作者釋出的擴充套件包
作者部落格: https://www.cnblogs.com/flyfire-cn/p/10356991.html