1. 程式人生 > >C#中串列埠通訊筆記

C#中串列埠通訊筆記

1、設定相應的控制元件,並命名


2、開啟串列埠按鈕事件程式碼(  其中全域性變數private SerialPort ComDevice = new SerialPort();)注:SerialPort需要使用using System.IO.Ports;

 private void usbOpenButton_Click(object sender, EventArgs e)
        {


            if (usbNumComboBox.Items.Count <= 0)
            {
                MessageBox.Show("沒有發現串列埠,請檢查線路!");
                return;
            }
            if (ComDevice.IsOpen == false)
            {


                ComDevice.PortName = usbNumComboBox.SelectedItem.ToString();
                ComDevice.BaudRate = Convert.ToInt32(baudComboBox.SelectedItem.ToString());
                ComDevice.Parity = (Parity)Convert.ToInt32(jiaoYanBitComboBox.SelectedIndex.ToString());
                ComDevice.DataBits = Convert.ToInt32(dataBitComboBox.SelectedItem.ToString());
                ComDevice.StopBits = (StopBits)Convert.ToInt32(stopBitComboBox.SelectedItem.ToString());


                try
                {
                    ComDevice.Open();
                    usbOpenButton.Enabled = false;
                    usbCloseButton.Enabled = true;
                    ComDevice.DataReceived += new SerialDataReceivedEventHandler(usbDataReceived);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }


            }


        }

3、usbDataReceived函式(資料接收函式)

 public void usbDataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            byte[] ReDatas = new byte[ComDevice.BytesToRead];
            ComDevice.Read(ReDatas, 0, ReDatas.Length);//讀取資料
            //以下為顯示資料(預設HEX)
            StringBuilder sb = new StringBuilder();
            string text = sb.ToString().ToUpper();
            for (int i = 0; i < ReDatas.Length; i++)
            {
                sb.AppendFormat("{0:x2}" + " ", ReDatas[i]);
            }
            receviedTextBox.AppendText(sb.ToString().ToUpper());
           
        }

4、如果報出執行緒問題

需要在load函式中加入 

Control.CheckForIllegalCrossThreadCalls = false;

相關推薦

C#串列通訊筆記

1、設定相應的控制元件,並命名 2、開啟串列埠按鈕事件程式碼(  其中全域性變數private SerialPort ComDevice = new SerialPort();)注:SerialPort需要使用using System.IO.Ports;  private

C++實現串列通訊上位機軟體

串列埠使用的是RS232匯流排進行通訊,通訊方式是半雙工。有兩種方式可以實現串列埠通訊,一種是通過ActiveX控制元件這種方法程式簡單,但欠靈活。第二個是可以通過呼叫Windows的API函式,本例程通過第二種方式。 一般通過四步來完成通訊(1)開啟串列埠(2)配置串列埠(3)讀寫串列埠(4)

c#的串列通訊簡單例項

---本人是一名小白,最近在做學校有關通訊的專案。在寫這份程式碼之前,查看了許多參考程式碼。如果我有說的不對的地方,還請大家指出來。 工具:串列埠助手、串列埠除錯助手、編譯器(我用的vs2017)//完整程式碼和除錯助手 在文末有連結 一、效果圖 首先給大家放一張效果圖。 二、

基於C#實現串列通訊Demo

https://www.cnblogs.com/Zed-H/p/8651882.html 1.基本概念   2.前端winForm佈局如下(僅僅為了實現功能,佈局略醜)   3.程式碼實現如下 1 nam

windows純C++實現串列通訊

點h檔案 #ifndef _WZSERIALPORT_H #define _WZSERIALPORT_H #include <iostream> using namespace std; /* 作者:歐陽偉 日期:2017-12-14 類名:WZ

ros與下位機通訊常用的c++ boost串列通訊

(執行串之前請先安裝串列埠驅動minicom) 一.首先移植c++ boost 庫: 1. 先去 Boost官網 下載最新的Boost版本, 我下載的是boost_1_63_0版本, 解壓     tar -xvf archive_name.tar.gz. 2. 進入

Android串列通訊的問題

    公司的專案是要做一個應用於工廠的一個物理網系統,android方面需要應用到串列埠通訊 .通過上網查詢到Google官方api,當時為了快速,把這個demo 依賴了 在application裡面生成了getSerialPort() 函式,用來獲取到S

WinCE串列通訊的除錯方法

串列埠是嵌入式系統中應用很廣的一種通訊介面。在WinCE中,通常會有一個串列埠供除錯使用,另外的串列埠可與外圍裝置連線,如GSM和GPS等模組,以獲取相應的資訊並進行處理。 在WinCE中,為了使用串列埠,必須有相應的串列埠驅動程式,一般在BSP中都有實現。串列埠驅動是典型的

Delphi串列通訊的實現

目前,利用 Delphi實現串列埠通訊的常用的方法有 3種:一是利用控制元件,如 MSCOMM控制元件和 SPCOMM控制元件;二是使用 API函式;三是呼叫其他串列埠通訊程式。其中利用 API編寫串列埠通訊程式較為複雜,需要掌握大量的通訊知識。相比較而言,利用 SPCOMM控制元件則相對較簡單,並且該控制元

C#實現串列通訊

        .NET提供了SerialPort類進行串列埠通訊。 串列埠主要有以下幾個引數:  1.串列埠名稱(PortName)  2.波特率(BaudRate) 3.資料位(DataBits) 4.奇偶效應(Parity)  5.停止位(StopBits)         使用很簡單

WinCE串列通訊的除錯方法----串列分離軟體的使用

串列埠是嵌入式系統中應用很廣的一種通訊介面。在WinCE中,通常會有一個串列埠供除錯使用,另外的串列埠可與外圍裝置連線,如GSM和GPS等模組,以獲取相應的資訊並進行處理。       在WinCE中,為了使用串列埠,必須有相應的串列埠驅動程式,一般在BSP中都有實現

Linux下C語言串列通訊

最近在做一個GPS專案,第一部分是將開發板和GPS用串列埠通訊,接受GPS上傳來的資料。Linux下所有的裝置都是以檔案形式儲存的,串列埠也是。整個串列埠通訊的流程圖為:所用到的標頭檔案為:#include<stdio.h>#include<fcntl.h&

C++編寫串列通訊程式

宣告:本部落格的內容主要是本人學習其他串列埠通訊部落格之後的總結,主要參考的部落格地址如下: 串列埠通訊一般分為同步和非同步兩種方式,本部落格主要講述非同步通訊程式的編寫,其程式設計步驟主要分為四步驟: 一、開啟串列埠  Win32系統把檔案的概念進

C#串列類serialPort的用法!

最近由於任務需要,用到了serialPort類,在此記錄重要步驟。     主要常用的屬性為:     PortName    //可用的COM埠號     BaudRate    //波特率   

C#製作串列通訊助手

介面:程式碼:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.

C# winform 串列通訊時檢測電腦可用串列並顯示

單擊同一個按鈕實現顯示“全部串列埠”和“可用串列埠”想切換 #region 全部串列埠和可用串列埠切換 private void button1_Click(object sende

C#使用SerialPort類實現串列通訊

表1                                                      SerialPort類的常用屬性 名  稱 說  明 BaseStream 獲取 SerialPort 物件的基礎 Stream 物件 Ba

C# 4】文字轉換。串列通訊字串string和位元組陣列byte[]、ASCII的轉換

string轉byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );byte[]轉string:string str = System.Text.Encoding.Default.GetString ( byteArra

C語言RL78 serial bootloader和C#語言bootloader PC端串列通訊程式

            瞭解更多關於bootloader 的C語言實現,請加我QQ: 1273623966 (驗證資訊請填 bootloader),歡迎諮詢或定製bootloader(線上升級程式)。   前段時間完成的hyperboot_rl78, 是專門為Renesas 16-bit微控制器RL78 通

C語言實現串列通訊知識點整理(四)】關於執行緒和程序

轉載:https://www.cnblogs.com/fuchongjundream/p/3829508.html 因為在外部檔案中呼叫結構體沒有用extern修飾,導致獲取不到正確的值,一直糾結線上程上。現在大概總結執行緒和程序的特點: 概念 1、程序(process) 狹義定義: