![]()
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.IO.Ports;
7 using System.Linq;
8 using System.Text;
9 using System.Threading.Tasks;
10 using System.Windows.Forms;
11
12 namespace SerialPort_Test
13 {
14 public partial class Form1 : Form
15 {
16
17 public Form1()
18 {
19 InitializeComponent();
20 }
21
22 private void timer1_Tick(object sender, EventArgs e)
23 {
24 lbl_Systime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
25 }
26
27 private void Form1_Load(object sender, EventArgs e)
28 {
29 timer1.Interval = 1000;
30 timer1.Start();
31
32 cbox_Ports.DataSource = SerialPort.GetPortNames();
33
34 cbox_Bauds.SelectedIndex = 2;
35 cbox_DataBits.SelectedIndex = 3;
36 cbox_StopBits.SelectedIndex = 0;
37 cbox_Paritys.SelectedIndex = 0;
38
39 serialPort1.DataReceived += serialPort1_Received;
40 }
41
42 private void serialPort1_Received(object sender, SerialDataReceivedEventArgs e)
43 {
44 try
45 {
46 this.Invoke((EventHandler)(delegate
47 {
48 tbox_RcvData.Text = string.Empty;
49 tbox_RcvData.AppendText(serialPort1.ReadExisting());
50 Log("接收数据:"+ tbox_RcvData.Text);
51 }));
52 }
53 catch (Exception)
54 {
55
56 Log("接收失败");
57 }
58 }
59
60 private void btn_RefreshPorts_Click(object sender, EventArgs e)
61 {
62 cbox_Ports.DataSource = SerialPort.GetPortNames();
63 }
64
65 private void btn_SerialConnect_Click(object sender, EventArgs e)
66 {
67
68 if (btn_SerialConnect.Text=="连接")
69 {
70 if (serialPort1.IsOpen)
71 {
72 serialPort1.Close();
73 }
74 try
75 {
76 serialPort1.PortName = cbox_Ports.Text.ToString().Trim();
77 serialPort1.BaudRate = Convert.ToInt32(cbox_Bauds.Text.ToString().Trim());
78 serialPort1.DataBits = Convert.ToInt32(cbox_DataBits.Text.ToString().Trim());
79 serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), cbox_StopBits.Text.ToString().Trim(), true);
80 serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), cbox_Paritys.Text.ToString().Trim(), true);
81 serialPort1.Open();
82 Log("连接成功!");
83 groupBox1.Enabled = false;
84 btn_SerialConnect.Text = "断开";
85 }
86 catch (Exception ex)
87 {
88
89 Log("连接失败," + ex);
90 }
91 }
92 else if (btn_SerialConnect.Text == "断开")
93 {
94 serialPort1.Close();
95 Log("已断开");
96 groupBox1.Enabled = true;
97 btn_SerialConnect.Text = "连接";
98
99 }
100
101
102 }
103
104 private void Log(string Info)
105 {
106 Invoke(new Action(() =>
107 {
108 ListViewItem lst = new ListViewItem(DateTime.Now.ToString());
109 lst.SubItems.Add(Info);
110 listView1.Items.Insert(0, lst);
111 }));
112 }
113
114 private void btn_Send_Click(object sender, EventArgs e)
115 {
116 if (serialPort1.IsOpen)
117 {
118 if (tbox_SendData.Text!=string.Empty)
119 {
120 serialPort1.WriteLine(tbox_SendData.Text);
121 Log("发送数据:" + tbox_SendData.Text);
122 }
123 else
124 {
125 Log("发送数据不能为空");
126 }
127 }
128 else
129 {
130 Log("端口未打开");
131 }
132 }
133 }
134 }