【解決方法】シリアルポートを読み取り、特定の文字以降のデータを保存したい

[ad_1]

シリアルポート経由でスケールデータを読み取り、テキストボックスに移動する単純なフォームを作成しようとしています
重要なのは、スケールが継続的に送信されるため、コードを保存する前に 文字 (02) を待機させる必要があることです。
スケールデータは以下の形式で送信されます
、、、、<gn=””>、,<終了>
どこ
= アスキー 02 = <スペース> は正の場合、<_> は負の場合
= 重量データ 小数点付き7桁
<単位> = はポンド、 はキログラム
<gn=””> = は総額、 は純額
= ステータス <スペース> 有効、 動作、 範囲超過/範囲未満
= Ascii 13,10

最終的には、受信した を変更して “_” を “-” に変更するだけですが、ステップとしては、まず保存する前に STX を待つことです。

私が試したこと:

mystring.char(x) を使用して文字を新しい文字列に移動しようとしましたが、STX を待つ方法がわかりません

解決策 1

具体的には言えません。なぜなら、「Visual-Studio」は、C のような古き良き言語から C# のような最新の言語に至るまで、幅広い言語とフレームワークをカバーしており、Javascript、F#、さらには Python や PHP も少し含まれているからです。何をする必要があるかについての詳細は、言語とフレームワークに強く依存します。

ただし、私が過去にそのようなことをどのように対処したかについての概要を説明します。
まず、シリアル ポートからの「生の入力」を渡すための 2 番目の (できればバックグラウンドの) スレッドを設定します。
ストリームを文字ごとに読み取り、「メッセージの開始」インジケーター(あなたの場合はSTX)をスキャンし、「メッセージの終わり」(あなたの場合はCR / LF)を取得するまでデータをバッファリングします。
このバッファは、バックグラウンド スレッドが「メッセージの先頭」のスキャンに戻る前に、検証と処理のために元のスレッドに転送されます。

こうすることで、メッセージ送信をメッセージ データから分離し、メイン コードは準備ができたときに処理する完全なメッセージを取得します。

[ad_2]

コメント

タイトルとURLをコピーしました