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);
}
}
バッファ内のデータを読み取ることができません。デバイスがBluetooth経由で接続されていない間、LEDが点滅しています。だから私は絶対に私がデバイスに接続したと確信しています。Bluetooth またはコードに関する問題ですか? ブルートゥースデバイスと通信するために別のライブラリを使用する必要がありますか? 以下のリンクを読みました。 SerialPort は、SerialPort を閉じた後に DataReceived イベントを発生させ 、データを受信していません