三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互( 二 )


【三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互】#include <HardwareSerial.h>HardwareSerial MySerial1(1);void setup() {// put your setup code here, to run once:MySerial1.begin(9600,SERIAL_8N1,16,17);MySerial1.onReceive(receiveEvent);Serial.begin(9600);}void loop() {}void receiveEvent(){if(MySerial1.available()){String str= MySerial1.readString();delay(1000);MySerial1.println("i am receive!!"+str);}delay(1000);}            Stream包括了以下方法 , 其中繼承Stream的分別為串口,IIC通訊的Wire,SD卡的一個類,以及用于網絡連接的Ethernet類,都可以使用這些方法用來對數據進行操作 。

三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖
c#編碼C#方面的代碼則簡單很多,界面一個開啟串口的按鈕 , 一個發送數據的按鈕和文本框,以及用來接收數據顯示的文本框 。
在代碼中我們開啟了串口 , 指定了打開的是哪一個串口,一些屬性是需要和ESP32那邊設置一樣的 , 在上面我們設置波特率為9600,數據為是8,停止位是1,校驗位是NONE,所以在c#這邊我們也需要這樣設置,不過校驗位默認是NONE的 , 所以此處我們沒有設置 , 然后開啟串口,注冊了一個接收到數據的一個回調,然后定義一個1024的字節數組,從串口讀取數據,返回讀取的數據長度,然后在對剛才定義的1024字節數組進行截取,然后通過UTF-8的格式轉為字符串,然后顯示到界面上的富文本框中,在發送按鈕事件中,我們從輸入框讀取數據轉為字節數組,然后將數據寫入到串口中去即可 。
三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖
      public partial class Form1 : Form{private SerialPort serialPort = new SerialPort("COM6");public Form1(){InitializeComponent();}private async void button1_Click(object sender, EventArgs e){serialPort.BaudRate = 9600;serialPort.StopBits = StopBits.One;serialPort.DataBits = 8;serialPort.Open();serialPort.DataReceived += (a, b) => {var serial = a as SerialPort;var data = https://www.huyubaike.com/biancheng/new byte[1024];var res=serial.Read(data,0, data.Length);data = data[..res];string st = Encoding.UTF8.GetString(data);BeginInvoke(() => { richTextBox1.Text += st; });};}private void button2_Click(object sender, EventArgs e){var str = Encoding.UTF8.GetBytes(textBox1.Text);serialPort.Write(str, 0, str.Length);}} 接線圖在此處的實例,我們需要準備一個USB轉TTL的模塊,四根母對母的杜邦線,在程序燒錄之后,我們需要將使用杜邦線讓USB轉TTL模塊和單片機進行連接,VCC或者5V接單片機的5V引腳,USB轉TTL的GND和單片機的GND相接 , 然后USB轉TTL的rxd引腳和單片機17引腳相接,txd引腳和單片機的16引腳相接,如下圖所示接線 , 5v不可和gnd接反,否則可能會燒壞模塊,確認接線無誤后,將USB轉TTL模塊插入電腦中,然后代碼中運行c#程序,電機開啟串口,隨后發送數據,可以接收到單片機的反饋 。
三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖

三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖

三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖

三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖
結語串口通訊是物聯網中,必不可少的一種通訊方式,通常情況下都是RX接TX,TX接RX , 除非是模塊廠商的規定,否則都是這樣接線,在后面的課程中,我會依次對IIC , 以及PWM,還有SPI,以及中斷單獨做一個講解,歡迎大家關注,學習和探討 , 我會將我所知道的都會分享,同時,后面也會有STM32系列的教程 。如果有感興趣的朋友,可以加QQ群一起來討論822084696 。
三 【單片機入門】應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互

文章插圖

推薦閱讀