wordpress心理教育網站西安百度推廣優(yōu)化公司
C#學習筆記(一)
- 簡介
- 第一章 上位機開發(fā)環(huán)境之 VS 使用和.NET 平臺基礎
- 一、安裝軟件
- 二、創(chuàng)建項目
- 三、第一個Hello world
- 四、解決方案與項目
- 五、Debug 和 Release 的區(qū)別
- 六、代碼的生產過程
- 七、CLR的其它功能
簡介
C# .NET工控上位機開發(fā)
在工控領域,C# .NET技術被廣泛用于構建上位機軟件,它以其強大的功能、易用性和高效的性能成為了開發(fā)者的重要工具。本文將詳細探討C# .NET在工控上位機開發(fā)中的應用,以及相關的核心知識點。
一、C#語言基礎
C#是一種面向對象的編程語言,由微軟公司開發(fā),主要用于.NET Framework平臺。它的語法簡潔明了,支持類型安全和垃圾回收,是開發(fā)工業(yè)控制應用的理想選擇。學習C#時,需要掌握類、對象、接口、繼承、多態(tài)等面向對象概念,以及異常處理、委托和事件等特性。
二、.NET Framework與.NET Core
.NET Framework是微軟的開發(fā)框架,包含了大量的庫和服務,如Windows Forms、WPF、ASP.NET等,為C#應用程序提供運行環(huán)境。而.NET Core是跨平臺的開源版本,同樣支持C#開發(fā),且具有更小的體積和更高的性能。在工控上位機開發(fā)中,根據(jù)項目需求和目標平臺可以選擇合適的.NET版本。
三、Windows Forms
Windows Forms是.NET Framework中的一個組件,用于創(chuàng)建桌面應用程序,特別適合開發(fā)工控上位機界面。通過Windows Forms,開發(fā)者可以利用各種**控件(如按鈕、文本框、圖表等)**設計用戶界面,并實現(xiàn)與硬件設備的交互。
四、數(shù)據(jù)通信與協(xié)議
工控上位機通常需要與PLC、傳感器、驅動器等硬件設備進行數(shù)據(jù)交換,這就涉及到了串口通信(RS-232、RS-485)、TCP/IP網絡通信、CAN總線等協(xié)議。C#提供了豐富的類庫,如System.IO.Ports命名空間下的SerialPort類用于串口通信,System.Net命名空間下的Socket類用于網絡通信,方便開發(fā)者實現(xiàn)不同協(xié)議的通信功能。
五、實時數(shù)據(jù)處理
在工控系統(tǒng)中,實時性是非常關鍵的。C# .NET允許開發(fā)者使用多線程和異步編程模型來處理實時數(shù)據(jù),確保程序在處理大量數(shù)據(jù)時仍能保持響應。Task類和async/await關鍵字是實現(xiàn)異步操作的強大工具。
六、可視化和圖表展示
工控上位機往往需要實時顯示設備狀態(tài)和生產數(shù)據(jù),這需要用到數(shù)據(jù)可視化技術。C# .NET的System.Windows.Forms.DataVisualization命名空間提供了豐富的圖表控件,如Chart,可以用于繪制折線圖、柱狀圖、餅圖等,便于監(jiān)控和分析工況。
七、數(shù)據(jù)庫集成
很多工控系統(tǒng)需要存儲和查詢歷史數(shù)據(jù),這時可以利用C# .NET與SQL Server、MySQL、SQLite等數(shù)據(jù)庫進行交互。ADO.NET是.NET Framework提供的數(shù)據(jù)庫訪問框架,支持連接池,能有效提高數(shù)據(jù)庫操作的效率。
八、安全性與權限管理
工控軟件往往涉及重要生產數(shù)據(jù),因此安全性是不容忽視的。C# .NET提供了加密解密、身份驗證、訪問控制等安全機制,確保數(shù)據(jù)的安全。
九、部署與維護
C# .NET應用程序可以通過ClickOnce技術實現(xiàn)快速部署,用戶只需點擊一次即可完成安裝。此外,Visual Studio提供了一整套的調試和測試工具,方便開發(fā)者進行程序的維護和優(yōu)化。
C# .NET為工控上位機開發(fā)提供了強大的支持,從界面設計、數(shù)據(jù)通信到數(shù)據(jù)庫集成和安全性管理,都有成熟的解決方案。開發(fā)者掌握這些核心知識點,就能高效地構建出功能完備、性能穩(wěn)定的工控上位機軟件。
第一章 上位機開發(fā)環(huán)境之 VS 使用和.NET 平臺基礎
一、安裝軟件
- 編程語言軟件
安裝VS2019、SQLServer 數(shù)據(jù)庫( SQL Server 2008 R2 Expresswith Advanced Services 版)(“SQLEXPRADV_x64_CHS) - 上位機工具軟件
串口助手、Modbus 系列等這些軟件非常多。
二、創(chuàng)建項目
打開 VS 開發(fā)工具,選擇“創(chuàng)建新項目”→控制臺程序,選“.NET Framework”。
三、第一個Hello world
Console:控制臺
四、解決方案與項目
- 從廣義的角度看,比如你說我正在開發(fā)一個項目,通常把這個開發(fā)的項目,在 VS 的環(huán)境中就認為是一個解決方案。
從狹義的角度看,解決方案中的一個部分就是一個“項目”。一個解決方案可以包含多個項目。
狹義上這些項目都是直接或間接有聯(lián)系的。最終通過“添加引用”讓這些項目關聯(lián)到一起(后續(xù)學習添加引用)。
五、Debug 和 Release 的區(qū)別
- 概念上的不同
Debug 的意思是調試
Release 的意思發(fā)布,正式作為生產環(huán)境的應用軟件。 - 斷點與調試
Debug 在任何情況下,都可以打斷點觀察變量。可以打斷點后讓程序一行一行的執(zhí)行。從而觀察程序邏輯和變量的值。Release無法直接斷點,并且觀察數(shù)據(jù)可能存在不正確的情況。 - 生成與優(yōu)化
Debug 所生成的文件,包含很多調試信息,生成的文件比較大。
Release 不包含調試信息,生成的文件較小。項目結束最后使用 Release 發(fā)布。
六、代碼的生產過程
.NET 平臺在編譯開發(fā)者所寫的代碼的時候,是通過兩次編譯完成的,這點和
其他的編程語言是有差別的
第一次編譯是完成從源代碼到微軟中間語言 IL(Intermidiate Language)的編譯**。第二
次編譯**是從 IL 到機器碼的編譯。
- 第一次編譯-代碼到 IL 編譯
從圖中我們可以看到在.NET 平臺可以選擇不同的開發(fā)語言,每一種開發(fā)語言都對應一個編譯器,我們現(xiàn)在用的是 C#語言,當寫完代碼后,會通過 VS 中自帶的 csc.exe這個可執(zhí)行文件完成代碼的編譯,如果代碼沒有錯誤,就會生成對應的 exe 或 dll 文件。exe 文件我們稱為可執(zhí)行文件,也就是你雙擊可以直接運行的文件。dll 文件是動態(tài)鏈接庫文件,這種文件一般都是作為項目的模塊來使用,不能直接運行,否則會報錯。 - 第二次編譯-IL 到機器碼的編譯
當啟動編譯好的文件exe的時候項目即可運行起來,其實在運行之前.NET 平臺在操作系統(tǒng)上運行的JIT 的即時編譯器(Just-In-Time Compilier),會把運行的“IL 中間語言代碼”,再次根據(jù)當前所在的操作系統(tǒng)類型,編譯成對應的機器碼,最后才被計算機執(zhí)行。但是這個過程是非???#xff0c;通常是感覺不到的。這樣做的好處是針對不同的操作系統(tǒng)和計算硬件無需多次編譯,對程序的部署帶來很大方便。
七、CLR的其它功能
CLR(Common Language Runtime)也可以稱為公共語言運行庫。這個東西的作用在.NET 平臺太重要了。
- 托管代碼和非托管代碼
- 非托管代碼:通俗理解,就是你的程序代碼直接運行到操作系統(tǒng)上,
不用其他程序的干預。準確一點說,非托管代碼就是針對特定操作系統(tǒng)而生成的 CPU 機器指令。 - 托管代碼:在 CLR 管理之下運行的程序指令代碼(也就是 MSIL,微軟中間語言代碼)。
- 公共語言運行時的兩個“管家”
圖中沒有直接畫出來的兩個東西 CLS 和 CTS。
- CLS(Common Language Specification)公共語言規(guī)范。它在 CLR 中主要是解決不同開發(fā)語言之間的語法規(guī)范問題。在.NET 平臺上有 C#語言、VB.NET 等,這些不同開發(fā)語言開發(fā)的模塊是可以直接相互使用而不需要做任何處理。如何做到呢?其中一半功勞是CLS來完成的。
- CTS(Common Type System)通用類型系統(tǒng)。它在 CLR 中主要解決不同開發(fā)語言之間的數(shù)據(jù)類型差異。不同的開發(fā)語言在數(shù)據(jù)類型表示上是有差別的,比如在 C#中整形用 int 表示,在 VB.NET 中用Integer 來表示。