我更熟悉 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# 编写的正确方法吗?