////打开串口并发送接收数据
private void BTNOpenAndSend_Click(object sender, EventArgs e)
{
this.serialPort1.BaudRate = 2400;
this.serialPort1.DataBits = 8;
this.serialPort1.StopBits = StopBits.One;
this.serialPort1.Parity = Parity.None;
this.serialPort1.PortName = "COM2";
try
{
OpenCOM();
this.serialPort1.Write(this.TXTSend.Text.ToString().Trim());
this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
catch(Exception Ex)
{
throw Ex;
}
finally
{
CloseCOM();
}
}
////////读取数据并显示
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string s = "";
int count = this.serialPort1.BytesToRead;
byte[] data = new byte[count];
this.serialPort1.Read(data, 0, count);
foreach (byte item in data)
{
s += Convert.ToChar(item);
}
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { this.TXTRecieve.Text = s; }));
}
else
{
this.TXTRecieve.Text = s;
}
}
------解决思路----------------------
此外,你串口连接设备了吗
你必须确保真的有收到数据,你这个回调方法才会执行
你串口根本没有连设备,那不执行不是正常的吗
不要以为你发送的内容会跑到接收里去,真那样通信不乱套了
发送是发送,接收是接收