私は C 言語に慣れており、最近はシリアル通信で C# を使用するように求められています。以下は、COM ポートからデータを受信するための私のコードです。
public void RxData()
{
int i = 0;
int Data;
bool StartRx = false;
int timer;
while (true)
{
Data = sp.ReadByte();
if (Data == 0x01)
{
StartRx = true;
}
if (StartRx == true)
{
RxBuffer[i++] = Data;
}
if (Data == 0x04)
{
RxChkSum = RxBuffer[i - 2];
break;
}
timer++;
if(timer>100)
{
timer = 0;
break;
}
}
}
上記は、0x01 で始まり 0x04 で終わるデータを受信する方法です。
データを受信しない場合に備えて、タイマーをインクリメントして 100 までカウントし、while ループを終了します。タイムアウトのようなもの。
しかし、タイマーが機能していないようです。データを受信しないと、私のプログラムは while ループから永久に抜け出せなくなります。
これが組み込み C プログラミングでの書き方であることは知っています。しかし、これは C# での正しい記述方法ですか?