C#简单的串口通信程序 注释详细适合学习

[复制链接]
查看12 | 回复0 | 2020-12-1 16:09:00 | 显示全部楼层 |阅读模式
1.jpg
部分源码:
  1. try
  2.             {
  3.                 serialPort1.Close();  //關閉串口
  4.                 button1.Enabled = true;   //打卡串口按鈕可用
  5.                 button2.Enabled = false;  //關閉串口按鈕不可用

  6.             }
  7.             catch   //一般情況下關閉串口不會出現錯誤,所有不需要加處理程序
  8.             {
  9.                 MessageBox.Show("串口关闭错误", "错误");
  10.             }
  11.         }

  12.         private void button3_Click(object sender, EventArgs e)
  13.         {
  14.             byte[] Data = new byte[1]; //數據一個字節就夠用了
  15.             if (serialPort1.IsOpen)   //判斷串口是否打開,如果打開執行下一步操作
  16.             {
  17.                 if (textBox2.Text != "")
  18.                 {
  19.                     if (!radioButton1.Checked) //如果發送模式是字符模式
  20.                     {
  21.                         try
  22.                         {
  23.                             serialPort1.WriteLine(textBox2.Text);  //寫數據
  24.                         }
  25.                         catch (Exception err)
  26.                         {
  27.                             MessageBox.Show("串口寫入錯誤", "錯誤");
  28.                             serialPort1.Close();
  29.                             button1.Enabled = true;   //打卡串口按鈕可用
  30.                             button2.Enabled = false;  //關閉串口按鈕不可用
  31.                         }
  32.                     }
  33.                     else
  34.                     {
  35.                          //                        字符串转换为二进制数据:
  36.                          //        byte[] bytes = new byte[str.Length / 2];
  37.                          //        for (int i = 0; i < str.Length; i += 2)
  38.                          //         { bytes[i / 2] = (byte)Convert.ToByte(str.Substring(i, 2), 16);}

  39.                         try
  40.                         {
  41.                             for (int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++) //取余3運算作用防止用戶輸入字符
  42.                             {
  43.                                 Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);
  44.                                 serialPort1.Write(Data, 0, 1);  //循環發送(如果輸入字符為0A0BB,則只發送0A,0B)
  45.                             }
  46.                             if (textBox2.Text.Length % 2 != 0)  //剩下一位單獨處理
  47.                             {
  48.                                 Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1, 1), 16);  //單獨發送B(0B)
  49.                                 serialPort1.Write(Data, 0, 1);  //發送
  50.                             }
  51.                         }
  52.                         catch (Exception err)
  53.                         {
  54.                             MessageBox.Show("串口寫入錯誤", "錯誤");
  55.                             serialPort1.Close();
  56.                             button1.Enabled = true;   //打卡串口按鈕可用
  57.                             button2.Enabled = false;  //關閉串口按鈕不可用
  58.                         }

  59.      /*                   for (int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++) //取余3運算作用防止用戶輸入字符
  60.                         {
  61.                             Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);
  62.                             serialPort1.Write(Data, 0, 1);  //循環發送(如果輸入字符為0A0BB,則只發送0A,0B)
  63.                         }
  64.                         if (textBox2.Text.Length % 2 != 0)  //剩下一位單獨處理
  65.                         {
  66.                             Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1, 1), 16);  //單獨發送B(0B)
  67.                             serialPort1.Write(Data, 0, 1);  //發送
  68.                         }
  69.       */
  70. 完整源码详见附件
复制代码
c#串口通信源码.zip (60.17 KB, 售价: 1 工控币)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则