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

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

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

      Loading

      上位機(jī)開(kāi)發(fā)之假裝有設(shè)備,使用 C# 模擬串口設(shè)備

      前言

      據(jù)說(shuō)不會(huì)上位機(jī)和游戲開(kāi)發(fā),都不好意思說(shuō)自己會(huì) C#

      正好這倆我都不太會(huì)??

      這不來(lái)點(diǎn)一下上位機(jī)的技能樹(shù)

      這次的需求很簡(jiǎn)單,用 C# 模擬一個(gè)設(shè)備協(xié)議,實(shí)現(xiàn)不用去現(xiàn)場(chǎng)對(duì)接設(shè)備,也能先開(kāi)發(fā)和調(diào)試上位機(jī)程序。

      實(shí)際設(shè)備是用 RS-485 標(biāo)準(zhǔn)進(jìn)行通信,模擬跑通之后,到現(xiàn)場(chǎng)只需要把RS-485 總線(A/B 差分線)插到 USB-RS485 轉(zhuǎn)換器上就可以實(shí)現(xiàn)數(shù)據(jù)讀取和指令下發(fā)了。

      PS: 最近把我的博客小重構(gòu)了一下,歡迎訪問(wèn)體驗(yàn)一下: http://blog.deali.cn/

      先放一些截圖作為預(yù)告

      本文要介紹只是最基礎(chǔ)的前期工作

      實(shí)際上這個(gè)項(xiàng)目要實(shí)現(xiàn)的是一個(gè)簡(jiǎn)單的物聯(lián)網(wǎng)平臺(tái),不只是對(duì)接幾臺(tái)設(shè)備

      系統(tǒng)的初版已經(jīng)完成了,這里我先放幾張截圖

      實(shí)時(shí)圖表

      設(shè)備控制

      就這幾個(gè)吧,其他的還不是很完善

      前提

      OK 說(shuō)回正題,模擬串口設(shè)備需要的前提是這些

      • 首先已經(jīng)拿到了詳細(xì)的設(shè)備協(xié)議文檔

        這個(gè)很關(guān)鍵,誰(shuí)也沒(méi)法摸黑去開(kāi)發(fā)呀

      • 操作系統(tǒng): Windows/Linux

        很神奇吧,Linux居然也能開(kāi)發(fā)上位機(jī)?事實(shí)上 Linux 模擬設(shè)備更方便

        不過(guò)為了方便開(kāi)發(fā)調(diào)試,我這里還是以 Windows 系統(tǒng)為例

      串口驅(qū)動(dòng)

      Windows 上模擬串口驅(qū)動(dòng): com0com

      這個(gè)工具可以在系統(tǒng)里創(chuàng)建一對(duì)連通的 com 串口,比如 com3 <-> com4

      在任何一端發(fā)信息,另一端都可以讀取

      我們就是用這個(gè)方式來(lái)模擬串口設(shè)備

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

      Linux的話可以使用 tty0tty

      https://github.com/freemed/tty0tty

      串口調(diào)試工具

      串口調(diào)試工具開(kāi)源的有很多

      我這次試用了 llcom 和 Wu.CommTool

      推薦 llcom,使用比較直觀

      項(xiàng)目地址: https://github.com/chenxuuu/llcom

      可以直接在命令行安裝

      winget install llcom
      

      界面長(zhǎng)這樣

      com0com常用命令

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

      我肯定是不想安裝這種老古董來(lái)污染我的電腦環(huán)境的

      好在還有命令行可以用

      這里列一些常用命令

      查看當(dāng)前有哪些虛擬串口

      list
      

      輸出會(huì)顯示每一對(duì)虛擬串口,例如:

      CNCA0 PortName=COM5
      CNCB0 PortName=COM6
      

      這說(shuō)明有一對(duì)虛擬串口:COM5 <-> COM6

      創(chuàng)建一對(duì)新的虛擬串口

      install PortName=COM5 PortName=COM6
      

      這會(huì)創(chuàng)建一對(duì)虛擬串口,分別命名為 COM5COM6,它們互相連通。

      ?? 以后就可以讓:

      • 模擬器程序 監(jiān)聽(tīng) COM5
      • 上位機(jī)/主程序 打開(kāi) COM6

      這樣它們互相通信,等同于 RS-485 設(shè)備在現(xiàn)場(chǎng)。

      刪除一對(duì)虛擬串口

      remove 0
      

      刪除標(biāo)識(shí)符為 CNCA0CNCB0 的那一對(duì)(0 是編號(hào),可以從 list 查到)。

      修改已有端口的參數(shù)

      比如要修改 CNCA0 的端口號(hào):

      change CNCA0 PortName=COM7
      

      清理所有虛擬串口

      uninstall
      

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

      開(kāi)發(fā)流程

      1. 創(chuàng)建一對(duì)虛擬串口:

        install PortName=COM3 PortName=COM4
        
      2. 編寫 模擬器程序(C#),監(jiān)聽(tīng) COM3

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

      PS: 創(chuàng)建串口后在設(shè)備管理器可以看到

      串口通信程序

      用 C# 自帶了 System.IO.Ports 工具,可以很方便實(shí)現(xiàn)串口通信,難怪那么多人用 C# 開(kāi)發(fā)上位機(jī)

      不過(guò)在 .NET Core 時(shí)代,這個(gè)庫(kù)需要通過(guò) nuget 安裝

      dotnet package add System.IO.Ports
      

      這里我寫了一個(gè)簡(jiǎn)單的串口模擬程序

      using System.IO.Ports;
      using System.Text;
      
      Console.WriteLine("=== 協(xié)議模擬器 ===");
      
      // 打開(kāi)虛擬串口 (比如 COM5)
      const string portName = "COM5";
      var port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
      port.Encoding = Encoding.ASCII;
      port.Open();
      
      Console.WriteLine($"模擬設(shè)備已啟動(dòng),監(jiān)聽(tīng) {portName}...");
      
      port.DataReceived += (s, e) => {
          try {
              var cmd = port.ReadExisting();
              Console.WriteLine($"收到: {cmd}");
      
              string response;
      
              // 協(xié)議模擬邏輯 (這里舉例)
              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 {
                  // 默認(rèn)回應(yīng)
                  response = "01,ack\n";
              }
          }
          catch (TimeoutException) {
              // 超時(shí)繼續(xù)監(jiān)聽(tīng)
          }
          catch (Exception ex) {
              Console.WriteLine($"錯(cuò)誤: {ex.Message}");
          }
      };
      

      實(shí)現(xiàn)效果

      使用串口調(diào)試工具發(fā)送指令,C# 寫的模擬程序這邊收到后就返回響應(yīng)了

      小結(jié)

      IT寒冬什么的已經(jīng)被說(shuō)了好多次了

      顯而易見(jiàn)的,互聯(lián)網(wǎng)的發(fā)展空間基本到頭了,這倆年火熱的AI也只是縮減了一批低端崗位而已,并不能把蛋糕做大

      但換個(gè)角度看,正因?yàn)榛ヂ?lián)網(wǎng)不再是藍(lán)海,才讓我們重新注意到那些“傳統(tǒng)”卻始終不可或缺的領(lǐng)域。上位機(jī)開(kāi)發(fā)就是這樣一個(gè)方向。它不像移動(dòng)互聯(lián)網(wǎng)那樣卷,但在工業(yè)控制、科研實(shí)驗(yàn)、自動(dòng)化測(cè)試等場(chǎng)景里卻有著穩(wěn)定而長(zhǎng)期的需求。無(wú)論是實(shí)驗(yàn)室里的一臺(tái)設(shè)備,還是生產(chǎn)線上成百上千臺(tái) PLC,最終都需要一個(gè)可靠、可視化的上位機(jī)來(lái)管理和監(jiān)控。

      對(duì)入門者來(lái)說(shuō),C# 提供了友好的語(yǔ)法和強(qiáng)大的生態(tài),足夠快速地做出第一個(gè)能跑的 Demo —— 一個(gè)串口助手、一個(gè)數(shù)據(jù)采集可視化界面,甚至是一個(gè)小型的測(cè)試管理系統(tǒng)。隨著學(xué)習(xí)深入,還可以接觸到 Modbus、CAN 總線、OPC 等更復(fù)雜的協(xié)議,逐漸走向真正的工業(yè)應(yīng)用。

      未來(lái)的趨勢(shì)不會(huì)停在“傳統(tǒng)上位機(jī)”上。跨平臺(tái)框架(.NET MAUI、Avalonia)、前后端融合(C# + Web 技術(shù)),甚至 AI 輔助的數(shù)據(jù)分析,都可能成為上位機(jī)開(kāi)發(fā)的新方向。換句話說(shuō),這條路并不狹窄,它只是需要你把眼光從“卷互聯(lián)網(wǎng)”轉(zhuǎn)向“深耕行業(yè)”。

      所以,如果你正處在迷茫期,不妨先從一個(gè)簡(jiǎn)單的上位機(jī)小項(xiàng)目開(kāi)始做起。哪怕是一個(gè)串口監(jiān)控工具,都可能成為你進(jìn)入這個(gè)領(lǐng)域的第一塊敲門磚。

      posted @ 2025-08-26 10:11  程序設(shè)計(jì)實(shí)驗(yàn)室  閱讀(1688)  評(píng)論(12)    收藏  舉報(bào)
      主站蜘蛛池模板: 西西大胆午夜人体视频| 西安市| 国产精成人品日日拍夜夜| 成人午夜无人区一区二区| 在线天堂新版资源www在线下载| 男女做aj视频免费的网站| 国产午夜精品理论大片| 奇米四色7777中文字幕| 亚洲成在人线AⅤ中文字幕| 性男女做视频观看网站| 亚洲AV成人无码久久精品四虎| 亚洲熟妇精品一区二区| 国产女人和拘做受视频免费| 国产一区国产精品自拍| 日韩一区二区三区在线观院| 日韩大片一区二区三区| 护士张开腿被奷日出白浆| 热久久美女精品天天吊色| 久久亚洲AV成人网站玖玖| 嵩明县| 无遮挡高潮国产免费观看| 国产亚洲精品久久久久久久久| 国产一区二区三区在线观看免费| 免费超爽大片黄| 欧美18videosex性欧美tube1080 | 亚洲av乱码一区二区| 国产一区二区视频啪啪视频| 国产福利酱国产一区二区| 亚洲精品久久一区二区三区四区| 亚洲精品一区二区动漫| 丰满大爆乳波霸奶| 97超级碰碰碰久久久久app| 国产高在线精品亚洲三区| 精品三级在线| 欧美老少配性行为| 国产真人做受视频在线观看| 91精品乱码一区二区三区| 日韩V欧美V中文在线| 2018年亚洲欧美在线v| 蜜臀AⅤ永久无码精品| 宝贝腿开大点我添添公视频免|