我用WPF写了个串口接收程序。我用单片机向电脑发送720个byte,用串口接收程序进入调试模式,在串口接收中断中设置断点。用int length = sp.BytesToRead;来读取缓冲区字节数,发现程序会分2次进入串口接收中断。第一次进入串口接收中断时length(缓冲区字节数)是155,第二次进入时length是565.我想问问为什么程序会两次进入串口接收中断。我试图用ReadBufferSize来改变数据缓冲区大小发现,不管我如何设置ReadBufferSize,进入串口接收中断后length的大小都没发生变化。我想问问有没有什么方法能只用进入一次中断就能使得这720个byte接收完成。或是能使得每次进入串口接收中断的length一样(每次接收到的数据一样多)。
下面是我写的串口接收函数:
[C#] 纯文本查看 复制代码 private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int j = 0;
int length = sp.BytesToRead;
if (length != 0)
{
bEnterReceived = true;
if (length < 204800)//******************************
{
sp.Read(data, 0, length);
for(int i=0;i<length;i++)
{
if (data[i] == 0xff)
{
if (data[i + 1] == 0x55)
{
Colour[gDCount + j] = data[i + 3];
value[gDCount + j] = data[i + 4] + data[i + 5] * 256;
j++;
}
}
}
gDCount = j + gDCount;
}
}
|