<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      上位機開發之假裝有設備,使用 C# 模擬串口設備

      前言

      據說不會上位機和游戲開發,都不好意思說自己會 C#

      正好這倆我都不太會??

      這不來點一下上位機的技能樹

      這次的需求很簡單,用 C# 模擬一個設備協議,實現不用去現場對接設備,也能先開發和調試上位機程序。

      實際設備是用 RS-485 標準進行通信,模擬跑通之后,到現場只需要把RS-485 總線(A/B 差分線)插到 USB-RS485 轉換器上就可以實現數據讀取和指令下發了。

      PS: 最近把我的博客小重構了一下,歡迎訪問體驗一下: http://blog.deali.cn/

      先放一些截圖作為預告

      本文要介紹只是最基礎的前期工作

      實際上這個項目要實現的是一個簡單的物聯網平臺,不只是對接幾臺設備

      系統的初版已經完成了,這里我先放幾張截圖

      實時圖表

      設備控制

      就這幾個吧,其他的還不是很完善

      前提

      OK 說回正題,模擬串口設備需要的前提是這些

      • 首先已經拿到了詳細的設備協議文檔

        這個很關鍵,誰也沒法摸黑去開發呀

      • 操作系統: Windows/Linux

        很神奇吧,Linux居然也能開發上位機?事實上 Linux 模擬設備更方便

        不過為了方便開發調試,我這里還是以 Windows 系統為例

      串口驅動

      Windows 上模擬串口驅動: com0com

      這個工具可以在系統里創建一對連通的 com 串口,比如 com3 <-> com4

      在任何一端發信息,另一端都可以讀取

      我們就是用這個方式來模擬串口設備

      PS: com0com 的圖形界面需要安裝 net framework 3.5 老古董才能用,我直接用命令行

      Linux的話可以使用 tty0tty

      https://github.com/freemed/tty0tty

      串口調試工具

      串口調試工具開源的有很多

      我這次試用了 llcom 和 Wu.CommTool

      推薦 llcom,使用比較直觀

      項目地址: https://github.com/chenxuuu/llcom

      可以直接在命令行安裝

      winget install llcom
      

      界面長這樣

      com0com常用命令

      前面說了 com0com 的圖形界面需要安裝 net framework 3.5

      我肯定是不想安裝這種老古董來污染我的電腦環境的

      好在還有命令行可以用

      這里列一些常用命令

      查看當前有哪些虛擬串口

      list
      

      輸出會顯示每一對虛擬串口,例如:

      CNCA0 PortName=COM5
      CNCB0 PortName=COM6
      

      這說明有一對虛擬串口:COM5 <-> COM6

      創建一對新的虛擬串口

      install PortName=COM5 PortName=COM6
      

      這會創建一對虛擬串口,分別命名為 COM5COM6,它們互相連通。

      ?? 以后就可以讓:

      • 模擬器程序 監聽 COM5
      • 上位機/主程序 打開 COM6

      這樣它們互相通信,等同于 RS-485 設備在現場。

      刪除一對虛擬串口

      remove 0
      

      刪除標識符為 CNCA0CNCB0 的那一對(0 是編號,可以從 list 查到)。

      修改已有端口的參數

      比如要修改 CNCA0 的端口號:

      change CNCA0 PortName=COM7
      

      清理所有虛擬串口

      uninstall
      

      ?? 注意,這會把所有 com0com 的虛擬端口全刪掉。

      開發流程

      1. 創建一對虛擬串口:

        install PortName=COM3 PortName=COM4
        
      2. 編寫 模擬器程序(C#),監聽 COM3

      3. 上位機程序/串口調試助手連 COM4,輸入指令,收到模擬器的返回

      PS: 創建串口后在設備管理器可以看到

      串口通信程序

      用 C# 自帶了 System.IO.Ports 工具,可以很方便實現串口通信,難怪那么多人用 C# 開發上位機

      不過在 .NET Core 時代,這個庫需要通過 nuget 安裝

      dotnet package add System.IO.Ports
      

      這里我寫了一個簡單的串口模擬程序

      using System.IO.Ports;
      using System.Text;
      
      Console.WriteLine("=== 協議模擬器 ===");
      
      // 打開虛擬串口 (比如 COM5)
      const string portName = "COM5";
      var port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
      port.Encoding = Encoding.ASCII;
      port.Open();
      
      Console.WriteLine($"模擬設備已啟動,監聽 {portName}...");
      
      port.DataReceived += (s, e) => {
          try {
              var cmd = port.ReadExisting();
              Console.WriteLine($"收到: {cmd}");
      
              string response;
      
              // 協議模擬邏輯 (這里舉例)
              if (cmd.Contains("temp", StringComparison.OrdinalIgnoreCase)) {
                  // 模擬返回溫度
                  response = "01,temp=25.6\n";
              }
              else if (cmd.Contains("hum", StringComparison.OrdinalIgnoreCase)) {
                  // 模擬返回濕度
                  response = "01,hum=60%\n";
              }
              else {
                  // 默認回應
                  response = "01,ack\n";
              }
          }
          catch (TimeoutException) {
              // 超時繼續監聽
          }
          catch (Exception ex) {
              Console.WriteLine($"錯誤: {ex.Message}");
          }
      };
      

      實現效果

      使用串口調試工具發送指令,C# 寫的模擬程序這邊收到后就返回響應了

      小結

      IT寒冬什么的已經被說了好多次了

      顯而易見的,互聯網的發展空間基本到頭了,這倆年火熱的AI也只是縮減了一批低端崗位而已,并不能把蛋糕做大

      但換個角度看,正因為互聯網不再是藍海,才讓我們重新注意到那些“傳統”卻始終不可或缺的領域。上位機開發就是這樣一個方向。它不像移動互聯網那樣卷,但在工業控制、科研實驗、自動化測試等場景里卻有著穩定而長期的需求。無論是實驗室里的一臺設備,還是生產線上成百上千臺 PLC,最終都需要一個可靠、可視化的上位機來管理和監控。

      對入門者來說,C# 提供了友好的語法和強大的生態,足夠快速地做出第一個能跑的 Demo —— 一個串口助手、一個數據采集可視化界面,甚至是一個小型的測試管理系統。隨著學習深入,還可以接觸到 Modbus、CAN 總線、OPC 等更復雜的協議,逐漸走向真正的工業應用。

      未來的趨勢不會停在“傳統上位機”上。跨平臺框架(.NET MAUI、Avalonia)、前后端融合(C# + Web 技術),甚至 AI 輔助的數據分析,都可能成為上位機開發的新方向。換句話說,這條路并不狹窄,它只是需要你把眼光從“卷互聯網”轉向“深耕行業”。

      所以,如果你正處在迷茫期,不妨先從一個簡單的上位機小項目開始做起。哪怕是一個串口監控工具,都可能成為你進入這個領域的第一塊敲門磚。

      posted @ 2025-08-26 10:11  程序設計實驗室  閱讀(1688)  評論(12)    收藏  舉報
      主站蜘蛛池模板: 亚洲另类激情专区小说图片| 性XXXX视频播放免费直播| 蜜桃视频一区二区在线观看| 中文字幕制服国产精品| 亚洲精品一区二区天堂| 一本本月无码-| 亚洲情A成黄在线观看动漫尤物| 国产精品一区二区三区激情| 日本亚洲一级中文字幕| 美女把尿囗扒开让男人添| 国产熟女一区二区五月婷| 免费大黄网站在线观看| 日韩黄色av一区二区三区| 久久精品国产最新地址| 中文字幕在线永久免费视频| 午夜国产精品福利一二| 国产高清小视频一区二区| AV最新高清无码专区| 乱中年女人伦av三区| 性欧美丰满熟妇xxxx性| 亚洲精品无码高潮喷水A| 国产精品一码在线播放| 日韩av影院在线观看| 欧美激情一区二区| 少妇高清一区二区免费看| 黄色亚洲一区二区在线观看| 黑人巨大精品oideo| 国产一二三五区不在卡| 高中女无套中出17p| 亚洲精品久久麻豆蜜桃| 日本一道本高清一区二区| 麻豆一区二区中文字幕| 国产拗精品一区二区三区| 国产一区二区三区18禁| 国产精品中文av专线| 非会员区试看120秒6次| 欧美黑人又粗又大又爽免费 | 国产亚洲欧美另类一区二区| 亚洲欧美日韩成人综合一区| 久久99国产一区二区三区| 人妻在线中文字幕|