私はC#とシリアル通信の世界に不慣れです。いくつかのチュートリアルを読んだ後、私はなんとかコミュニケーションを機能させることができました。私はここで別の同様の質問をしましたが、正しい質問をしたとは思いません。最後の質問で与えられたアドバイスに従い、コードを少し変更して、マイクロコントローラーから次のようなシリアルメッセージを送信するようにしました。
SxxxxxxxxxxxxxxxxxxxxxxxxE
xは、さまざまな数値、プラス記号とマイナス記号、およびコンマを表します。私が送信する文字列は常に同じ長さで、常にSで始まり、Eで終わります(これが悪い場合は変更できます)。私が抱えている問題は、シリアルラインを読み込もうとすると、一度にメッセージの一部しか表示されないため、次のようになります。
Sxxxxxxx
xxxxx
xxxxESxxx
この情報をマイクロコントローラーから継続的に送信していますが、特定の時間にのみアクセスしたいので、メッセージのすべての部分を受信し、それを元に戻してから返す関数を作成しようとしています。働き。問題は、現時点ではそれをどのように行うのかわからないということです。
どんな助けでも大歓迎です!
これは私が遊んでいるコードです:
SerialPort serialHC = new SerialPort(); // serial connection dealing with Hand Controller
public string receiveCommandHC()
{
string messageHC = "";
if (serialHC.IsOpen)
{
//serialHC.DiscardInBuffer();
//messageHC = serialHC.ReadLine();
messageHC = serialHC.ReadTo("*");
//tempMsgHC = serialHC.ReadTo("*");
//i = tempMsgHC.IndexOf("S");
//tempMsgHC.Remove(0,i);
//messageHC = tempMsgHC;
//serialHC.Read(bufferHC = new byte[serialHC.BytesToRead], 0, serialHC.BytesToRead);
}
return messageHC;
以前はメッセージの終わりを「*」にしていました
ここで例をたどってみたところ、これが私が得たものです。
これは私が送信しているものです(パテを使用してチェックします)