私はマルチスレッドのプログラミングに慣れていないので、誰かが私を助けてくれるかどうか疑問に思っています。
シリアル(および連続)非同期メッセージを受信するプログラムを作成し、それを読んでこのメッセージを整理する必要があります。
私はマルチスレッド戦術を使おうとしています。最初のスレッドはシリアル情報を受け取り、それを一度に1行ずつマトリックス(RxTh [col] [row])に書き込む責任があります。次に、2番目のスレッドが呼び出され、RxThマトリックスの各行が読み取られ、特定の文字('begin line' msgを表す)が検索されます。このスレッドは、この受信メッセージを別のマトリックス(Msg [col2] [row2])に配置して、新しいマトリックスの異なる行にあるメッセージの各行を分離する必要もあります。
将来的には、この再配置された行を操作して、詳細情報を検索する必要がありますが、現時点ではこの部分については考えていません。
だから、私はこのプログラムでいくつかの問題を抱えています:
まず、読み取り部分を開始するために書き込みを停止したときに、シリアルメッセージの一部が失われています。そのため、ミューテックス、つまりクリティカルセクションを使用しようとしました。しかし、それは機能していません、そして私は理由がわかりません。
2番目の問題は、2番目のマトリックス(Msg [] [])の一部の行の途中に「0」の奇妙なシーケンスがあることです。このスレッドが新しい行を読み取り始めるときに、この「0」が表示されるのではないかと思われます。 RxThマトリックスの。意味がありますか?
ミューテックスを使用する場合、一度に1行だけをロックできますか?
誰かが私を助けてくれたら、私は大いに感謝します!
さらに詳しい情報やコードが必要な場合は、私に聞いてください。
ありがとう