我有可以通过蓝牙作为 COM5 连接到我的笔记本电脑的设备。该设备有一个脉冲传感器。我想将来自传感器的数据绘制到图形上。但是,当我连接到 COM5 时,未触发 serialport_Datarecieved 事件。我尝试了使用 matlab 的设备。它需要并绘制数据,但我无法在 c# 中获取数据。我检查了设备的连接状态,没问题。我试图更改 DtrEnabled 和 RtsEnapled 属性,但没有奏效。
private void Form1_Load(object sender, EventArgs e)
{
cmbPortList.Items.AddRange(SerialPort.GetPortNames());
cmbPortList.Sorted = true;
cmbPortList.SelectedIndex = 0;
this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
private void btnOpenPort_Click(object sender, EventArgs e)
{
try
{
serialPort1.PortName = cmbPortList.Text;
serialPort1.BaudRate = 9600;
serialPort1.DataBits = 8;
serialPort1.ReadTimeout = 500;
serialPort1.WriteTimeout = 500;
serialPort1.Handshake = Handshake.None;
if (!serialPort1.IsOpen)
{
btnRun.Enabled = true;
serialPort1.Open();
}
}
catch (Exception ex)
{
serialPort1.Close();
}
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
while (serialPort1.BytesToRead > 0)
{
Thread.Sleep(50);
byte[] buffer = new byte[serialPort1.BytesToRead];
serialPort1.Read(buffer, 0, buffer.Length);
}
}
我无法读取缓冲区中的任何数据。设备未通过蓝牙连接时,LED 闪烁。所以我绝对确定我连接到设备。是蓝牙问题还是代码问题?我应该使用另一个库来通信蓝牙设备吗?我已阅读下面的链接。 SerialPort 在关闭SerialPort 未接收到任何数据后触发 DataReceived 事件