大家好:
我是初学者,正在写串口通信,结果代码中DataReceived 不响应,硬件应没问题,短路线已连接.下面是代码:请大家看一下是哪出问题了:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; namespace test2
{
public partial class Form1 : Form
{
int a;
int b;
int c=0; public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//add 1
a = a + 1;
label1.Text = a + ""; } private void button2_Click(object sender, EventArgs e)
{
// add 10
a = a + 10;
label1.Text = a + ""; } private void button3_Click(object sender, EventArgs e)
{
//add 100
a = a + 100;
label1.Text = a + ""; } private void button4_Click(object sender, EventArgs e)
{
//send. serialPort1.Open(); //byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
//string str = Convert.ToBase64String(data);
serialPort1.WriteLine(a.ToString());
MessageBox.Show("数据发送成功!", "系统提示"); //serialPort1.Close();
b = b + 1;
textBox2.Text = " 发送 " + b; } private void button5_Click(object sender, EventArgs e)
{
serialPort1.Close();
} public delegate void DataReceivedDelegate(object sender, EventArgs e);
public void serialPort1_DataReceived(object sender, EventArgs e) //这是你那个事件
{
Invoke(new DataReceivedDelegate(CallDataReceived),new object[]{sender,e});
} public void CallDataReceived(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine()); MessageBox.Show("数据接收成功!", "系统提示");
c = data[0] +data[1] ;
serialPort1.Close();
textBox1.Text = " 收到 " + c; }
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Parity = Parity.None;
serialPort1.DataBits = 8;
serialPort1.StopBits = StopBits.One;
serialPort1.RtsEnable = true;
serialPort1.DtrEnable = true;
serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
} private void textBox2_TextChanged(object sender, EventArgs e)
{ } private void textBox1_TextChanged(object sender, EventArgs e)
{ }
}
}
我是初学者,正在写串口通信,结果代码中DataReceived 不响应,硬件应没问题,短路线已连接.下面是代码:请大家看一下是哪出问题了:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; namespace test2
{
public partial class Form1 : Form
{
int a;
int b;
int c=0; public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//add 1
a = a + 1;
label1.Text = a + ""; } private void button2_Click(object sender, EventArgs e)
{
// add 10
a = a + 10;
label1.Text = a + ""; } private void button3_Click(object sender, EventArgs e)
{
//add 100
a = a + 100;
label1.Text = a + ""; } private void button4_Click(object sender, EventArgs e)
{
//send. serialPort1.Open(); //byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
//string str = Convert.ToBase64String(data);
serialPort1.WriteLine(a.ToString());
MessageBox.Show("数据发送成功!", "系统提示"); //serialPort1.Close();
b = b + 1;
textBox2.Text = " 发送 " + b; } private void button5_Click(object sender, EventArgs e)
{
serialPort1.Close();
} public delegate void DataReceivedDelegate(object sender, EventArgs e);
public void serialPort1_DataReceived(object sender, EventArgs e) //这是你那个事件
{
Invoke(new DataReceivedDelegate(CallDataReceived),new object[]{sender,e});
} public void CallDataReceived(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine()); MessageBox.Show("数据接收成功!", "系统提示");
c = data[0] +data[1] ;
serialPort1.Close();
textBox1.Text = " 收到 " + c; }
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Parity = Parity.None;
serialPort1.DataBits = 8;
serialPort1.StopBits = StopBits.One;
serialPort1.RtsEnable = true;
serialPort1.DtrEnable = true;
serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
} private void textBox2_TextChanged(object sender, EventArgs e)
{ } private void textBox1_TextChanged(object sender, EventArgs e)
{ }
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货