我有一个小型嵌入式系统,我用调试例程安装了它,通过蓝牙连接将完全相同的字节一遍又一遍地发送到 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 机器上经历过蓝牙字节消失?
任何人都可以看到可能导致这种情况的明显(或晦涩)错误吗?