創建C#串口通信程序詳解,
在.NET平台下創建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空間是System.IO.Ports。這個新的框架不但可以訪問計算機上的串口,還可以和串口設備進行通信。我們將使用標准的RS 232 C 在PC間通信。它工作在全雙工模式下,而且我們不打算使用任何的握手或流控制器,而是使用無modem連接。創建C#串口通信程序的具體實現是如何的呢?讓我們開始吧:
創建C#串口通信程序之命名空間
System.IO.Ports命名空間中最重用的是SerialPort 類。
創建C#串口通信程序之創建SerialPort 對象
通過創建SerialPort 對象,我們可以在程序中控制串口通信的全過程。
我們將要用到的SerialPort 類的方法:
ReadLine():從輸入緩沖區讀一新行的值,如果沒有,會返回NULL
WriteLine(string):寫入輸出緩沖
Open():打開一個新的串口連接
Close():關閉
- //create a Serial Port object
- SerialPort sp = new SerialPort ();
默認情況下,DataBits 值是8,StopBits 是1,通信端口是COM1。這些都可以在下面的屬性中重新設置:
BaudRate:串口的波特率
StopBits:每個字節的停止位數量
ReadTimeout:當讀操作沒有完成時的停止時間。單位,毫秒
還有不少其它公共屬性,自己查閱MSDN。
創建C#串口通信程序之串口的硬件知識
在數據傳輸的時候,每個字節的數據通過單個的電纜線傳輸。包包括開始位,數據,結束為。一旦
開始位傳出,後面就會傳數據,可能是5,6,7或8位,就看你的設定了。發送和接收必須設定同樣
的波特率和數據位數。
創建C#串口通信程序之無貓模式
沒有Modem模式的電纜只是簡單地交叉傳送和接收線。同樣DTR & DSR, 和 RTS & CTS也需要交叉。
這裡,我們三條線。互連2和3(一段的2pin連接3pin),連接兩端的5pin。
創建C#串口通信程序示例程序
如果想使用默認屬性,按“Save Status”按鈕,如果想改變屬性按“Property”。設定好之後,可以通信了。
主窗口的代碼
- #region Using directives
-
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Windows.Forms;
- using System.IO.Ports;
-
- #endregion
-
- namespace Serialexpample
- {
- partial class Form1 : Form
- {
- //create instance of property page
- //property page is used to set values for stop bits and
- //baud rate
-
- PropertyPage pp = new PropertyPage();
-
- //create an Serial Port object
- SerialPort sp = new SerialPort();
-
- public Form1()
- {
- InitializeComponent();
- }
-
- private void propertyButton_Click(object sender, EventArgs e)
- {
- //show property dialog
- pp.ShowDialog();
-
- propertyButton.Hide();
- }
-
- private void sendButton_Click(object sender, EventArgs e)
- {
- try
- {
- //write line to serial port
- sp.WriteLine(textBox.Text);
- //clear the text box
- textBox.Text = "";
- }
- catch (System.Exception ex)
- {
- baudRatelLabel.Text = ex.Message;
- }
-
- }
-
- private void ReadButton_Click(
- object sender, EventArgs e)
- {
- try
- {
- //clear the text box
- textBox.Text = "";
- //read serial port and displayed the data in text box
- textBox.Text = sp.ReadLine();
- }
- catch(System.Exception ex)
- {
- baudRatelLabel.Text = ex.Message;
- }
- }
-
- private void Form1_Load(object sender, EventArgs e)
- {
-
- }
-
- private void Form1_FormClosing(
- object sender, FormClosingEventArgs e)
- {
- MessageBox.Show("Do u want to Close the App");
- sp.Close();
- }
-
- private void startCommButton_Click(
- object sender, EventArgs e)
- {
- startCommButton.Hide();
- sendButton.Show();
- readButton.Show();
- textBox.Show();
- }
-
- //when we want to save the status(value)
- private void saveStatusButton_Click_1(
- object sender, EventArgs e)
- {
- //display values
- //if no property is set the default values
- if (pp.bRate == "" && pp.sBits == "")
- {
- dataBitLabel.Text = "BaudRate = " +
- sp.BaudRate.ToString();
- readTimeOutLabel.Text = "StopBits = " +
- sp.StopBits.ToString();
- }
- else
- {
- dataBitLabel.Text = "BaudRate = " +
- pp.bRate;
- readTimeOutLabel.Text = "StopBits = " + pp.sBits;
- } //創建C#串口通信程序
-
- parityLabel.Text = "DataBits = " +
- sp.DataBits.ToString();
- stopBitLabel.Text = "Parity = " +
- sp.Parity.ToString();
- readTimeOutLabel.Text = "ReadTimeout = " +
- sp.ReadTimeout.ToString();
-
- if (propertyButton.Visible == true)
- propertyButton.Hide();
- saveStatusButton.Hide();
- startCommButton.Show();
-
- try
- {
- //open serial port
- sp.Open();
- //set read time out to 500 ms
- sp.ReadTimeout = 500;
- }
- catch (System.Exception ex)
- {
- baudRatelLabel.Text = ex.Message;
- }
- }
- }
- }
創建C#串口通信程序之屬性設置對話框代碼:
- #region Using directives
-
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
-
- #endregion
-
- namespace Serialexpample
- {
- partial class PropertyPage : Form
- {
- //variables for storing values of baud rate and stop bits
- private string baudR="";
- private string stopB="";
-
- //property for setting and getting baud rate and stop bits
- public string bRate
- {
- get
- {
- return baudR;
- }
- set
- {
- baudR = value;
- }
- }
-
- public string sBits
- {
- get
- {
- return stopB;
- }
- set
- {
- stopB = value;
- }
- }
-
- public PropertyPage()
- {
- InitializeComponent();
- }
-
- private void cancelButton_Click(
- object sender, EventArgs e)
- {
- this.bRate = "";
- this.sBits = "";
- //close form
- this.Close();
- }
-
- private void okButton_Click_1(
- object sender, EventArgs e)
- {
- //here we set the value for stop bits and baud rate.
- this.bRate = BaudRateComboBox.Text;
- this.sBits = stopBitComboBox.Text;
- //
- this.Close();
-
- }
- }
- }
C#串口通信程序創建的相關內容就向你介紹到這裡,希望對你了解創建C#串口通信程序的步驟和需要注意的事宜。
VS2010怎創建C文件
打開VS2010,文件--新建--項目,選擇Visual C++裡面的Win32控制台應用程序,把下面的名稱填上(如New Project),然後點確定。
2.進入Win32應用程序向導,點下一步,在應用程序設置裡選擇“空項目”,完成。
3.在左側的表中找到“源文件”,右鍵單擊,添加--新建項--C++文件,把下面的名稱填上,後綴為.C(如My file.c),然後點擊添加。OK,大功告成,可以編自己的C程序了。
C語言怎創建窗口
#include <windows.h>
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("IOL");
HWND hwnd;
MSG msg;
WNDCLASSEX wndclassex = {0};
wndclassex.cbSize = sizeof(WNDCLASSEX);
wndclassex.style = CS_HREDRAW | CS_VREDRAW;
wndclassex.lpfnWndProc = WndProc;
wndclassex.cbClsExtra = 0;
wndclassex.cbWndExtra = 0;
wndclassex.hInstance = hInstance;
wndclassex.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wndclassex.lpszMenuName = NULL;
wndclassex.lpszClassName = szAppName;
wndclassex.hIconSm = wndclassex.hIcon;
if (!RegisterClassEx (&wndclassex))
{
MessageBox (NULL, TEXT ("RegisterClassEx failed!"), szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW,
szAppName,
TEXT ("WindowTitle"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
......余下全文>>