110,535
社区成员
发帖
与我相关
我的任务
分享
这里是发送的代码是成功的
private void btnUSB_Click(object sender, EventArgs e)
{
#region 简单的发送
try
{
if (serialPort1.IsOpen == false)
{
serialPort1.PortName = portName;
serialPort1.Open();
serialPort1.BaudRate = 115200;
//设置数据位
serialPort1.DataBits = 8;
//设置奇偶效验;
serialPort1.Parity = Parity.None;
//设置停止位;
serialPort1.StopBits = StopBits.One;
////读超时,即在1000内未读到数据就引起超时异常
serialPort1.ReadTimeout = 1000;
serialPort1.WriteTimeout = 1000;
//设置数据流控制;数据传输的握手协议;
serialPort1.Handshake = Handshake.None;
if (!serialPort1.IsOpen)
{
MessageBox.Show("请先打开端口");
return;
}
else
{
协议内容....
this.serialPort1.Write(start);
}
}
else
{
MessageBox.Show("端口未打开");
}
catch
{
MessageBox.Show("未找到端口!");
}
#endregion
}
//这里是接收的serialPort1_DataReceived方法
public string RecvText;
#region 处理serialPort对象的数据接收事件的方法
public void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(500);
//this.serialPort1.ReceivedBytesThreshold = 2;
byte[] buffer = new byte[serialPort1.BytesToRead]; //定义一个用于存放接收缓冲区中的数据的字节型数组
CheckForIllegalCrossThreadCalls = false;
try
{
serialPort1.Read(buffer, 0, buffer.Length); //从缓冲区中读数据,放到buffer中
for (int i = 0; i < buffer.Length; i++)
{
RecvText += buffer.ToString() + " "; //将buffer中的字节转行成16进制,然后赋值给全局变量RecvText
}
RecvText = RecvText.Trim();
//MessageBox.Show(RecvText);
this.serialPort1.DiscardInBuffer();
this.serialPort1.DiscardOutBuffer();
}
catch (Exception e2)
{
MessageBox.Show(e2.Message + "读取串口数据失败!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
for (int i = 0; i < buffer.Length; i++)
{
RecvText += buffer.ToString() + " "; //将buffer中的字节转行成16进制,然后赋值给全局变量RecvText
}