一個最最基礎的 串口通信 程序!!!
最近正在學c#_還不是很熟悉_只是有點java的基礎
SerialPort類 的介紹
http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport(v=vs.80).aspx
這個例子網上有,哎....我一直以為 serailport 不是一個控件呢!
我現在疑問?_難道 所有的再c#可以引用的類,都對應一個控件嗎?
還有c#的添加監聽器的方法,該如何添加呢?
如果是控件的話,直接雙擊控件就可以添加上監聽器,但是對於一般的對象的話就得
用+=這個方法添加....還沒怎么看c#,慢慢來
關於這個程序是有bug的,而且我也沒有修正,因為串口對象的 readline是個阻塞方法,所以當你運行到這個語句的時候,如果讀不到數據的話就會導致整個程序假死,只能強制終止 這個程序了
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.IO.Ports;//新調用的類所在的命名空間
- namespace 串口控制
- {
- public partial class Form1 : Form
- {
- //我用了控件,所以不用初始化對象了!!
- //SerialPort sPort;//聲明一個串口類對象,該對象的初始化我放到了
- public Form1()
- {
- InitializeComponent();
- }
- //發送按鈕的響應時間
- private void button1_Click(object sender, EventArgs e)
- {
- //對於中文的話,要先對其進行編碼,將其轉換成 _Base64String ,否則你得不到中文字符串的
- byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
- string str = Convert.ToBase64String(data);
- sPort.WriteLine(str);
- MessageBox.Show("數據發送成功","系統提示");
- }
- private void button2_Click(object sender, EventArgs e)
- {
- //解碼然后將字符串賦值給 文本框的 文本區
- byte[] data = Convert.FromBase64String(sPort.ReadLine());
- textBox2.Text = Encoding.Unicode.GetString(data);
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- sPort.PortName = "com3";//串口的portname
- sPort.BaudRate = 9600;//串口的波特率
- sPort.Open();
- }
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- //關閉串口
- sPort.Close();
- }
- }
- }