0

Parallax BASIC Stamp ボード上に、テキスト コマンドを読み取り、コマンドに基づいてテスト ケースを実行するアプリケーションがあります。SPI バス経由でデータを送信し、SPI バスから読み取る 1 つのテスト ケースは、DEBUGIN テキストのバースト レートによっては失敗します。

スタンプ ボードは、19200 ボーのシリアル ポートを介して PC (クアッド コア 2+ GHZ) に接続されます。

ベーシック スタンプ ターミナルまたはハイパー ターミナルを使用してスタンプ ボードにコマンドを送信すると、テストに合格します。C# アプリケーションを介して同じコマンドを送信すると、テストが失敗します。主な違いは、テキストがスタンプ ボードに送信されるバースト レートです。

人間はコンピューター (アプリケーション) よりもテキストの送信が遅くなります。ハイパー ターミナルを使用すると、1 文字が 19200 ボーで送信されます。アプリケーションは、19200 ボーで 8 文字を文字間に休止なしで送信しています。

DEBUGIN ステートメント (シリアル ポートからの入力) が SHIFTIN または SHIFTOUT コマンドにどのように影響するか、またはこの問題を解決する方法を誰かが知っているかどうかの説明を探しています。

残念ながら、DEBUGIN コマンドのボーレートは変更できません。別の方法は、シリアルポートコマンドを低速で使用してカスタムバージョン(テキストから数値への変換を含む)を作成することです(これは、私のプロジェクトではほとんどない余分な貴重なスペースを使用します)。

StackEchange への投稿が間違ったフォーラムである場合は、移行して、移行した理由を投稿してください。

4

1 に答える 1

2

マイクロコントローラ側が UART と SPI ペリフェラルの両方に適切なサービスを提供するように設定されていないようです。UART に後続の文字があまりにも早く到着すると、SPI がサービスされないか、またはおそらく見逃されるUART上のいくつかの文字。

堅牢なソリューションは、問題を理解し、マイクロ コントローラー コードのアーキテクチャで修正することです。たとえば、割り込みを使用し、割り込みサービス ルーチンに、より長いソフトウェア管理の fifo と周辺ハードウェアの 1 または 2 の深さの fifo の間で文字を移動させる必要がある場合があります。

おそらく実行可能ですが、よりリスクの高い解決策は、C# アプリケーションで送信する文字間に遅延を挿入して、人間の速度でタイピングする見かけ上の動作を利用することです。このテーマのバリエーションは、埋め込みデバイスに文字をエコーさせ、C# プログラムに各文字のエコーを待ってから次の文字を送信させることです (埋め込みコマンド バッファーをクリアして最初からやり直すにはエスケープ文字も必要です)。 C# プログラムは、組み込みデバイスがタイムアウトしたことを宣言して最初からやり直すことを決定します)

別のアイデアは、送信する必要があるデータを短くすることです。お気づきのように、端末アプリケーションを使用してそれらを操作できるため、組み込みシステムに対する人間が判読できるコマンド言語は優れています。ただし、組み込みシステムが非常に制約されている場合は、パックされたバイナリまたは 16 進形式を使用すると、解析が容易になります。極端な 1 文字のコマンドで実行の合間に一時停止するのは、この最も単純なケースです (そして、主に英数字を使用する場合は、ターミナル プログラムを使用できるようになります)。

于 2011-02-24T05:18:09.597 に答える