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