serial port,即串列連線埠,現在大多數硬體設備均採用串口技術與計算機相連,因此串口的應用程式開發越來越普遍。例如,在計算機沒有安裝網卡的情況下,將本機上的一些信息數據 傳輸到另一台計算機上,那么利用串口通信就可以實現。運行本程式,在“傳送數據”文本框中輸入要傳送的數據,單擊【傳送】按鈕,將傳送的數據傳送到所選擇 的連線埠號中;單擊【接收】按鈕,傳遞的數據被接收到“接收數據”文本框中。
基本介紹
- 中文名:串列連線埠
- 外文名:serialport
- 實現:串口數據通信等
- 現狀:串口的應用程式開發越來越普遍
技術要點,屬性部分,方法部分,實現過程,相關技術,
技術要點
在.NET Framework 2.0中提供了SerialPort類,該類主要實現串口數據通信等。下面主要介紹該類的主要屬性和方法。
屬性部分
公共屬性
名稱 | 說明 |
BaseStream | 獲取 SerialPort 對象的基礎 Stream 對象。 |
獲取或設定串列波特率。 | |
BreakState | 獲取或設定中斷信號狀態。 |
BytesToRead | 獲取接收緩衝區中數據的位元組數。 |
BytesToWrite | 獲取傳送緩衝區中數據的位元組數。 |
CDHolding | 獲取連線埠的載波檢測行的狀態。 |
獲取 IContainer,它包含 Component。(從 Component 繼承。) | |
CtsHolding | 獲取“可以傳送”行的狀態。 |
DataBits | 獲取或設定每個位元組的標準數據位長度。 |
DiscardNull | 獲取或設定一個值,該值指示 Null 位元組在連線埠和接收緩衝區之間傳輸時是否被忽略。 |
DsrHolding | 獲取數據設定就緒 (DSR) 信號的狀態。 |
DtrEnable | 獲取或設定一個值,該值在串列通信過程中啟用數據終端就緒 (DTR) 信號。 |
獲取或設定傳輸前後文本轉換的位元組編碼。 | |
獲取或設定串列連線埠數據傳輸的握手協定。 | |
獲取一個值,該值指示 SerialPort 對象的打開或關閉狀態。 | |
NewLine | |
獲取或設定奇偶校驗檢查協定。 | |
ParityReplace | 獲取或設定一個位元組,該位元組在發生奇偶校驗錯誤時替換數據流中的無效位元組。 |
PortName | 獲取或設定通信連線埠,包括但不限於所有可用的 COM 連線埠。 |
ReadBufferSize | 獲取或設定 SerialPort 輸入緩衝區的大小。 |
ReadTimeout | 獲取或設定讀取操作未完成時發生逾時之前的毫秒數。 |
ReceivedBytesThreshold | 獲取或設定 DataReceived 事件發生前內部輸入緩衝區中的位元組數。 |
RtsEnable | 獲取或設定一個值,該值指示在串列通信中是否啟用請求傳送 (RTS) 信號。 |
獲取或設定 Component 的 ISite。(從 Component 繼承。) | |
StopBits | 獲取或設定每個位元組的標準停止位數。 |
WriteBufferSize | 獲取或設定串列連線埠輸出緩衝區的大小。 |
WriteTimeout | 獲取或設定寫入操作未完成時發生逾時之前的毫秒數。 |
保護屬性
方法部分
公共方法
名稱 | 說明 |
CreateObjRef | 創建一個對象,該對象包含生成用於與遠程對象進行通信的代理所需的全部相關信息。 (從 MarshalByRefObject 繼承。) |
DiscardInBuffer | 丟棄來自串列驅動程式的接收緩衝區的數據。 |
DiscardOutBuffer | 丟棄來自串列驅動程式的傳輸緩衝區的數據。 |
已重載。 釋放 SerialPort 對象使用的非託管資源。 | |
GetHashCode | 用作特定類型的哈希函式。GetHashCode 適合在哈希算法和數據結構(如哈希表)中使用。 (從 Object 繼承。) |
GetLifetimeService | 檢索控制此實例的生存期策略的當前生存期服務對象。 (從 MarshalByRefObject 繼承。) |
GetPortNames | 獲取當前計算機的串列連線埠名稱數組。 |
InitializeLifetimeService | 獲取控制此實例的生存期策略的生存期服務對象。 (從 MarshalByRefObject 繼承。) |
Open | 打開一個新的串列連線埠連線。 |
Read | 已重載。 從 SerialPort 輸入緩衝區中讀取。 |
ReadByte | 從 SerialPort 輸入緩衝區中同步讀取一個位元組。 |
ReadChar | 從 SerialPort 輸入緩衝區中同步讀取一個字元。 |
ReadExisting | 在編碼的基礎上,讀取 SerialPort 對象的流和輸入緩衝區中所有立即可用的位元組。 |
一直讀取到輸入緩衝區中的 NewLine 值。 | |
ReadTo | 一直讀取到輸入緩衝區中的指定 value 的字元串。 |
ReferenceEquals | 確定指定的 Object 實例是否是相同的實例。 (從 Object 繼承。) |
Write | 已重載。 將數據寫入串列連線埠輸出緩衝區。 |
將指定的字元串和 NewLine 值寫入輸出緩衝區。 |
保護方法
名稱 | 說明 |
已重載。 已重寫。 釋放 SerialPort 對象使用的非託管資源。 | |
在通過垃圾回收將 Component 回收之前,釋放非託管資源並執行其他清理操作。 (從 Component 繼承。) | |
GetService | |
MemberwiseClone | 已重載。 (從 MarshalByRefObject 繼承。) |
公共事件
實現過程
(1)新建一個項目,命名為Ex13_01,默認窗體為Form1。
(2)在Form1窗體中,主要添加兩個Button控制項,分別用於執行傳送數據和接受數據,添加兩個TextBox控制項,用於輸入傳送數據和顯示接收數據。
(3)主要程式代碼。
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("數據傳送成功!","系統提示");
}
private void button2_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
serialPort1.Close();
MessageBox.Show("數據接收成功!","系統提示");
}