1

我有一个小型嵌入式系统,我用调试例程安装了它,通过蓝牙连接将完全相同的字节一遍又一遍地发送到 PC。

有问题的速度是 921600 bps

在成功接收到大约四千字节(给或取几百)后,我的应用程序不再从 Win7 中看到

我完全有信心在流从我的应用程序中消失后继续发送字节(即超过四千)

我非常怀疑 Windows 出于某种原因没有提供蓝牙接收的内容。

我可以满怀信心地说...

  • 该应用程序确实正确显示了前四千个奇怪的字节
  • 之后该应用程序不显示任何内容
  • 外部盒子继续发送字节

我对 Win'7 的怀疑越来越深,因为

  • 停止应用程序后,我的外部发射盒继续。
  • 两分钟后,我停止了外接发射盒
  • 那一刻,PC和小盒子都没有互动
  • 两个系统都停止后,(几分钟)我重新启动了 PC 应用程序
  • 没有传输字节,应用程序收到了 941 个字节,我真的不知道是从哪里来的
  • 这些字节来自上一个会话(我一遍又一遍地发送单个字节 0x37,这就是我在数据流中看到的)

然后我们再次启动小盒子生成数据,并看到相同的行为:看到 4435 个字节,之后我们没有从 UART 获得任何字节,尽管在 921600 bps 有两分钟的字节泛滥。

这是接收线程

 void RecieveThread()
  {
      int n;

      while (continueRecieving)
      {
          n = connectorPort.BytesToRead;

          byte[] bits = new byte[n];

          if (n > 0)
          {
              connectorPort.Read(bits, 0, n);
          }

          Write(bits);
      }
  }

以防万一有人觉得它很重要,这里是 Write(bits) 例程

 public void Write(byte[] b)
 {
     if (writting)
     {
         for (int i = 0; i < b.Length; i++)
         {
             storage[sPlace++] = b[i];

             pass += b[i].ToString("X2") + " ";

             if (sPlace % numericUpDown1.Value == 0)
             {
                 pass += "\r\n";
             }
         }
     }
 }

以前有没有人在装有 C# 应用程序的 Win7 机器上经历过蓝牙字节消失?

任何人都可以看到可能导致这种情况的明显(或晦涩)错误吗?

4

0 回答 0