串口连接问题

时间:2014-09-26 13:43:02

标签: bluetooth serial-port cycle

我买了一个能够获取生理参数的传感器;它通过蓝牙协议连接到我的电脑,因此在连接时,会分配一个串行端口(例如命名为COM10)。 现在我正在编写一个简单的例程来实时读取数据:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SewLib;
using System.IO.Ports;



  namespace WindowsFormsApplication1
    {
  public partial class Form1 : Form
                {
                    SewDevice myDevice;
                    SerialPort comPort;
    public Form1()
{
InitializeComponent();
comPort = new SerialPort("COM10");
myDevice = new SewDevice(ref comPort);
myDevice.OnSamplesReceived += new ReceivedSamplesHandler(ReceiveData);
}

private void btstart_Click(object sender, EventArgs e)
{
eErrorClassOpcodes reply = myDevice.StartStreaming();
if (reply == eErrorClassOpcodes.Ok)
{
// ok device is connected and streaming is started
}
}

这对我有用,但现在我想要一个非静态的程序来选择com端口:我的想法是在我的电脑检测到的所有端口之间循环,只选择带蓝牙适配器的端口。

你有什么想法吗?

由于

安德烈

1 个答案:

答案 0 :(得分:0)

自动检测串行设备是一个很滑的斜坡。如果你绝对必须,那么我会创建一个看起来像这样的新助手类(未经测试)

class MyAutoDetector
{
    public MyAutoDetector(){}

    public SewDevice AutoDetect()
    {
       SerialPort comPort;
       SewDevice myDevice = null;
       eErrorClassOpcodes reply;

       foreach(string portName in SerialPort.GetPortNames().ToList())
       {
           comPort = new SerialPort("COM10");
           myDevice = new SewDevice(ref comPort);

           reply = myDevice.StartStreaming();
           if (reply == eErrorClassOpcodes.Ok)
           {
              // ok device is connected and streaming is started
              break;
           }
       }
       return myDevice;
    }

我不了解SewLib,但您应该验证波特率,位数,编码等。通常您使用这些来配置您的串口....但也许SewLib会为您做到这一点。

另一种选择,如果您碰巧知道唯一的PID / VID,请在此处回答: How do I get serial Port device id?