Unity 串口通信

可以通過計算機管理->設備管理器,查看端口
在這里插入圖片描述
串口通訊,通常是指的通過計算機或其他設備上的串行端口實現數據傳輸的過程。
定義與特點:串口通訊是按位(bit)發送和接收字節的通信方式,它將數據一位一位地順序傳輸。其特點是使用的數據線少,通常只需兩根線就可以實現雙向通信,并且能夠實現遠距離通信,比如串口通信的長度可達 1200 米,而并行通信設備線總長不得超過 20 米。
工作原理:串口通信采用 UART(通用異步收發傳輸器)協議進行數據傳輸。發送端的 UART 將并行數據轉換為串行數據,在數據字節前發送起始位,然后依次發送數據字節的每個 Bit,最后發送停止位。接收端的 UART 檢測到起始位后開始接收數據位和停止位,并將串行數據轉換為并行數據。
關鍵參數
在這里插入圖片描述

每秒位數(波特率):表示每秒鐘傳輸的位數,常見的波特率有 4800bps、9600bps、19200bps 等。波特率越高,數據傳輸速度越快,但也可能帶來更高的誤碼率。
數據位:指實際傳輸的數據位數,可能為 5、6、7、8 位等,標準的 ASCII 碼是 7 位,擴展的 ASCII 碼是 8 位。
奇偶校驗位:用于接收方對接收到的數據進行校驗,校驗方式有奇校驗、偶校驗等,以判斷數據在傳輸過程中是否出現錯誤。
停止位:用于表示單個包的最后一位,典型的值為 1、1.5 和 2 位。停止位的位數越多,不同時鐘同步的容忍程度越大,但數據傳輸率也越慢。

使用C# System.IO.Ports下進行串口通訊,這邊有個注意的地方就是從,net 2開始才有,如果沒有命名空間,可以更改一下ProjectSetting->Player->Configuration-> API Compatibility Level

using UnityEngine;
using System.Collections;
using System.IO.Ports;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Text;public class SerialPortBridge : MonoBehaviour
{#region 定義串口屬性//定義基本信息public string portName = "COM7";//串口名public int baudRate = 115200;//波特率public Parity parity = Parity.None;//校驗位public int dataBits = 8;//數據位public StopBits stopBits = StopBits.One;//停止位SerialPort sp = null;Thread dataReceiveThread;//發送的消息string message = "";public List<byte> listReceive = new List<byte>();char[] strchar = new char[100];//接收的字符信息轉換為字符數組信息string str;#endregionvoid Start(){OpenPort();dataReceiveThread = new Thread(new ThreadStart(DataReceiveFunction));dataReceiveThread.Start();}void Update(){}#region 創建串口,并打開串口public void OpenPort(){//創建串口sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits);sp.ReadTimeout = 400;try{sp.Open();}catch (Exception ex){Debug.Log(ex.Message);}}#endregion#region 程序退出時關閉串口void OnApplicationQuit(){ClosePort();}public void ClosePort(){try{sp.Close();dataReceiveThread.Abort();}catch (Exception ex){Debug.Log(ex.Message);}}#endregion/// <summary>/// 打印接收的信息/// </summary>void PrintData(){for (int i = 0; i < listReceive.Count; i++){strchar[i] = (char)(listReceive[i]);str = new string(strchar);}Debug.Log(str);}#region 接收數據void DataReceiveFunction(){byte[] buffer = new byte[1024];int bytes = 0;while (true){if (sp != null && sp.IsOpen){try{bytes = sp.Read(buffer, 0, buffer.Length);//接收字節if (bytes == 0){continue;}else{string strbytes = Encoding.Default.GetString(buffer);Debug.Log(strbytes);}}catch (Exception ex){if (ex.GetType() != typeof(ThreadAbortException)){}}}Thread.Sleep(10);}#endregion}#endregion#region 發送數據public void WriteData(string dataStr){if (sp.IsOpen){sp.Write(dataStr);}}void OnGUI(){message = GUILayout.TextField(message);if (GUILayout.Button("Send Input")){WriteData(message);}string test = "AA BB 01 12345 01AB 0@ab 發送";//測試字符串if (GUILayout.Button("Send Test")){WriteData(test);}}#endregion
}

其實這邊更推薦插件SerialPortUtilityPro,C#原生的限制很大,串口相關的功能這個插件都封裝好了,傻瓜式使用。
在這里插入圖片描述
在這里插入圖片描述
直接掛一下核心組件 SerialPortUtilityPro,直接在面板上設置好需要的參數,設備號,廠商號,端口可以不填,會自動掃描,填了會主動連接設置的端口,然后ReadCompleteEventObject中去添加UnityEvent事件,去響應收到的消息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97002.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArcGIS JSAPI 高級教程 - 創建漸變色材質的自定義幾何體

ArcGIS JSAPI 高級教程 - 創建漸變色材質的自定義幾何體核心代碼完整代碼在線示例工作中遇到一個比較復雜的功能&#xff0c;其中用到漸變色&#xff0c;于是研究了一下&#xff0c;發現雖然 JS API 不直接支持漸變色&#xff0c;但是也可以自定義創建漸變色&#xff0c;通過 M…

不增加 GPU,首 Token 延遲下降 50%|LLM 服務負載均衡的新實踐

作者&#xff1a;鈺誠 簡介 傳統的負載均衡算法主要設計用于通用的 Web 服務或微服務架構中&#xff0c;其目標是通過最小化響應時間、最大化吞吐量或保持服務器負載平衡來提高系統的整體效率&#xff0c;常見的負載均衡算法有輪詢、隨機、最小請求數、一致性哈希等。然而&am…

《Linux內存管理:實驗驅動的深度探索》【附錄】【實驗環境搭建 7】【使用buildroot方式構建文件系統】

1. 使用Buildroot 構建的優勢 使用 Buildroot 構建 rootfs 的優點在于 快速、簡潔、可裁剪、可重復&#xff0c;特別適合 中小型嵌入式 Linux 項目&#xff08;如車機、路由器、工業控制設備、IoT 網關&#xff09;。它幫助開發者避免繁瑣的手動編譯和集成工作&#xff0c;專注…

一洽客服系統:網頁咨詢入口設置

一洽客服系統提供了靈活的網頁咨詢入口設置&#xff0c;旨在為用戶提供多樣化的咨詢類別選擇&#xff0c;并根據用戶的需求接入指定的路由線路。以下是該功能的詳細說明&#xff1a;一、網頁咨詢入口設置針對用戶的不同業務提供不同的咨詢類別選擇&#xff0c;用戶選擇業務后接…

Apache Flink錯誤處理實戰手冊:2年生產環境調試經驗總結

作者&#xff1a;_Naci Simsek 前言 在流處理領域&#xff0c;Apache Flink 已經成為企業級實時數據處理的首選框架。然而&#xff0c;在生產環境中&#xff0c;開發者和運維人員經常會遇到各種看似神秘的問題。基于過去兩年中大量客戶在真實場景中的使用案例&#xff0c;可以觀…

嵌入式開發學習 C++:day01

C概述 C誕生 1972年前后&#xff0c;計算機先驅丹尼斯里奇開始設計C語言并用它來重寫Unix系統&#xff0c;里奇的這個決定催生了計算機領域最石破天驚的兩門重炮:Unix和C&#xff0c;這兩者都是IT產業中鼻祖級的存在&#xff0c;Unix是現代蘋果系統和Linux系統的最初來源&#…

LeaferJS創建支持縮放、平移的畫布,并繪制簡單圖形

文章目錄介紹原生JS使用LeaferJS的簡單示例原生JS使用LeaferJS并支持縮放平移畫布Vue中使用LeaferJS并支持縮放平移介紹 LeaferJS官網&#xff1a;https://www.leaferjs.com/ 官方快速上手的教程地址&#xff1a;https://www.leaferjs.com/ui/guide/install/ui/start.html 原…

JumpServer 堡壘機部署與 SSH 公鑰接入服務器教程

前言&#xff1a;在企業運維場景中&#xff0c;服務器的安全訪問與操作管控至關重要。JumpServer 作為開源堡壘機的典型代表&#xff0c;憑借集中管控、權限精細分配、操作全鏈路審計等核心能力&#xff0c;成為保障運維安全合規的關鍵工具。 無論是中小企業簡化運維權限管理&a…

TensorFlow 面試題及詳細答案 120道(21-30)-- 模型構建與神經網絡

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面試題-專欄總目錄 文章目錄 一、本文面試題目錄 21. TensorFlow中構建神經…

Qt圖片上傳系統的設計與實現:從客戶端到服務器的完整方案

文章目錄系統架構概覽核心組件解析1. ImageUploadWorker&#xff1a;上傳任務的執行者關鍵方法解析2. ImageUploadManager&#xff1a;線程的"指揮官"3. ImageUploader&#xff1a;網絡通信的"信使"4. 服務器端&#xff1a;圖片的"收納箱"關鍵技…

MySQL InnoDB vs MyISAM

MySQL 兩種引擎&#xff08;InnoDB vs MyISAM&#xff09;核心區別事務與鎖機制??特性??InnoDB??MyISAM??事務支持?支持 ACID 事務&#xff08;原子性、一致性、隔離性、持久性&#xff09;&#xff0c;適用于需強數據一致性的場景&#xff08;如金融交易&#xff09;…

軟件定義汽車(SDV)調試——如何做到 適配軟件定義汽車(SDV)?(上)

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

windows下 docker desktop 清理ext4.vhdx文件 并縮小ext4.vhdx文件

1、路徑C:\Users\Administrator\AppData\Local\Docker\wsl\dataext4.vhdx 清理之前30多G&#xff0c;現在只有不到2個G2、清理命令# 1、清?清理懸空鏡像和緩存? docker image prune -f # 刪除未被引用的鏡像層 docker builder prune -f # 清理構建緩存# 2、壓縮虛擬磁盤&a…

超越ChatBI!深度解析衡石HENGSHI SENSE 6.0如何實現全流程AI賦能

在數據智能領域風起云涌的2025年&#xff0c;“ChatBI”已成為一個炙手可熱卻又令人疲憊的概念。市場上充斥著各式各樣的問答式BI工具&#xff0c;它們雖然帶來了交互的新穎體驗&#xff0c;卻往往局限于“問答”這一單一環節&#xff0c;無法解決數據從整合到洞察的全鏈路痛點…

Apple Silicon Mac 上解決 Docker 平臺不匹配和 QEMU 段錯誤問題

問題概述 許多用戶在 Apple Silicon (M1/M2) Mac 上嘗試運行 W3AF Docker 鏡像時遇到了以下錯誤: WARNING: The requested images platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested qemu: uncau…

如何借助文檔控件 TX Text Control 輕松優化 PDF 文件大小?

在數字文檔的日常使用中&#xff0c;PDF 文件的體積大小直接影響存儲空間、傳輸速度和打開體驗。尤其是在包含大量圖片、圖表或字體資源的文檔中&#xff0c;文件往往會變得非常龐大。 文檔處理控件TX Text Control 為開發者提供了多種可配置的工具與策略&#xff0c;幫助在不同…

[身份驗證腳手架] 前端認證與個人資料界面

第2章&#xff1a;前端認證與個人資料界面 歡迎回來&#xff0c;未來的Web開發者&#xff01;在前一章中&#xff0c;我們學習了breeze:install命令如何為您的Laravel應用設置用戶認證基礎。您選擇了一個"前端技術棧"(如Blade、React、Vue或Livewire)并運行了一些命…

RabbitMQ、RocketMQ 和 ActiveMQ 三種主流消息隊列的詳細部署安裝指南

RabbitMQ、RocketMQ 和 ActiveMQ 三種主流消息隊列的詳細部署安裝指南 RabbitMQ、RocketMQ 和 ActiveMQ 三種主流消息隊列的詳細部署安裝指南。 一、RabbitMQ 部署安裝 RabbitMQ 用 Erlang 語言編寫,推薦使用官方提供的 Docker 鏡像或包管理器安裝。 方法一:使用 Docker (…

vue新增用戶密碼框自動將當前用戶的密碼自動填充的問題

1.問題 新增店鋪的時候&#xff0c;設置管理員賬號&#xff0c;輸入框已將當前登錄用戶的密碼填充上了解決方式 在el-input輸入框類型為password的上增加參數autocomplete“new-password”<el-form-item :label"$t(storeList.password)" prop"shopUserPasswo…

設計模式:工廠模式(Factory Pattern)

文章目錄一、工廠模式簡介二、簡單工廠模式的概念三、工廠方法模式的概念四、抽象工廠模式的概念一、工廠模式簡介 工廠模式是一種創建型設計模式&#xff0c;主要解決對象創建 的問題。它的核心思想是&#xff1a;把對象的創建和使用分離&#xff0c;讓使用者不直接依賴具體類…