|
部分源码: - try
- {
- serialPort1.Close(); //關閉串口
- button1.Enabled = true; //打卡串口按鈕可用
- button2.Enabled = false; //關閉串口按鈕不可用
- }
- catch //一般情況下關閉串口不會出現錯誤,所有不需要加處理程序
- {
- MessageBox.Show("串口关闭错误", "错误");
- }
- }
- private void button3_Click(object sender, EventArgs e)
- {
- byte[] Data = new byte[1]; //數據一個字節就夠用了
- if (serialPort1.IsOpen) //判斷串口是否打開,如果打開執行下一步操作
- {
- if (textBox2.Text != "")
- {
- if (!radioButton1.Checked) //如果發送模式是字符模式
- {
- try
- {
- serialPort1.WriteLine(textBox2.Text); //寫數據
- }
- catch (Exception err)
- {
- MessageBox.Show("串口寫入錯誤", "錯誤");
- serialPort1.Close();
- button1.Enabled = true; //打卡串口按鈕可用
- button2.Enabled = false; //關閉串口按鈕不可用
- }
- }
- else
- {
- // 字符串转换为二进制数据:
- // byte[] bytes = new byte[str.Length / 2];
- // for (int i = 0; i < str.Length; i += 2)
- // { bytes[i / 2] = (byte)Convert.ToByte(str.Substring(i, 2), 16);}
- try
- {
- for (int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++) //取余3運算作用防止用戶輸入字符
- {
- Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);
- serialPort1.Write(Data, 0, 1); //循環發送(如果輸入字符為0A0BB,則只發送0A,0B)
- }
- if (textBox2.Text.Length % 2 != 0) //剩下一位單獨處理
- {
- Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1, 1), 16); //單獨發送B(0B)
- serialPort1.Write(Data, 0, 1); //發送
- }
- }
- catch (Exception err)
- {
- MessageBox.Show("串口寫入錯誤", "錯誤");
- serialPort1.Close();
- button1.Enabled = true; //打卡串口按鈕可用
- button2.Enabled = false; //關閉串口按鈕不可用
- }
- /* for (int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++) //取余3運算作用防止用戶輸入字符
- {
- Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);
- serialPort1.Write(Data, 0, 1); //循環發送(如果輸入字符為0A0BB,則只發送0A,0B)
- }
- if (textBox2.Text.Length % 2 != 0) //剩下一位單獨處理
- {
- Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1, 1), 16); //單獨發送B(0B)
- serialPort1.Write(Data, 0, 1); //發送
- }
- */
- 完整源码详见附件
复制代码
c#串口通信源码.zip
(60.17 KB, 下载次数: 0, 售价: 1 金币)
|
|