私は、正確に同じバイトを bluetooth 接続を介して PC に何度も送信するために、デバッグルーチンを装備した小さな組み込みシステムを持っています。
問題の速度は 921600 bps です
約 4,000 バイトを正常に受信した後 (ギブまたは数百を取る)、私のアプリは Win7 からそれ以上認識しません。
ストリームがアプリから消えた後も、バイト (つまり、4,000 をはるかに超える) が送信され続けることを完全に確信しています。
Windows がどういうわけか、何らかの理由で、Bluetooth が受信しているものを配信していないのではないかと私は非常に疑っています。
私は完全な自信を持って断言できます...
- アプリは最初の 4,000 バイトを正しく表示します
- その後、アプリは何も表示しません
- 外部ボックスは引き続きバイトを送信します
Win'7 に対する私の疑惑が強まっているのは、
- アプリを停止した後、外部送信ボックスが続行されました。
- 2分後、外部送信ボックスを停止しました
- その瞬間、PCと小箱の両方が相互作用していませんでした
- 両方のシステムが停止した状態で (数分間) PC アプリを再起動しました
- 送信されたバイトがない場合、アプリは 941 バイトを受信しました。どこから来たのかはよくわかりません
- これらのバイトは以前のセッションからのものでした (1 バイトの 0x37 を何度も送信していますが、それがデータ ストリームで見られたものです)
次に、データを生成する小さなボックスを再び開始し、同じ動作を確認しました。921600 bps で 2 分間バイトがフラッドしたにもかかわらず、4435 バイトが確認された後、UART からバイトを取得しませんでした。
受付スレはこちら
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 マシンで Bluetooth バイトが消える経験をした人はいますか?
これを引き起こしている可能性のある明らかな(またはあいまいな)エラーを誰でも見ることができますか?