如何使用循环缓冲区c#读取和计算串口

How can I read and calculate serial port with circular buffer c#

我知道,你们当中有人会因为这个标题而给我减分。但请倾听并提供帮助。如果你给我看和我标题一样的标题,我会删除这个话题。但我不知道如何在这里找到问题。对不起,因为我的英语。

我想读取并处理我从串行端口读取到我的循环缓冲区中的数据。

我可以读取串口。它在 DataReceived class.

处完成

我可以将我的串行端口字节设置到我下载的循环缓冲区中 here。但是,我不能用这个缓冲区做任何处理。例如,我从这样的端口获取字节:

0000F9:F0F0003044343A008453240000000F90000F9:F0F0002044789A008098740000000F90000F9:F0F0002114563A008225890000000F90000F9:F0

但我想先这样看:

0000F9    //discard this, because this data is lacking
:F0F0003044343A008453240000000F90000F9  //take this
:F0F0002044789A008098740000000F90000F9  //take this
:F0F0002114563A008225890000000F90000F9  //take this
:F0     //discard this because of lack

其次,我想这样解析它;

: = start character
F0 = it means start the program
000 = Power of machine 
blablabla

在本节的最后,我想在我的表格中展示这些。所以我想从你那里得到这些标题的帮助。或者任何人都可以在这个论坛中向我展示正确的问题。

起初,我不知道如何在整个程序中做一个(全局)public 循环缓冲区。当我像那样在 data_received void 定义缓冲区 class 时,

var buffer = CircularBuffer<byte>(256);

我可以使用刚进入 dataReceived void 的缓冲区。但是我想在程序的任何地方都使用它。所以,当我尝试在我的程序顶部定义它时。cs/main class 像这样:

var buffer = new CircularBuffer<byte>(256);

它,失败了。我不知道如何将它定义到我的程序中。这是我的第一个问题。

其次,如果我解决了我的第一个问题,我必须解析和控制我的缓冲区。首先,我必须验证我的数据流。我的串行端口在一个数据流中向我发送 38 个字符。我的公式很简单;每个数据流必须以 : 开头,并且必须以 F9 结尾。 F9 附近的两个字符必须等于中间数据流的一些值的总和。所以,我只想知道这个,我怎样才能处理我的循环缓冲区?

如果有人想看我的代码,我可以发邮件。[​​=16=]

从现在开始非常感谢。

首先,我改变了 CircularBuffer class 没有静态;

其次,我将缓冲区定义为全局缓冲区:

CircularBuffer<byte> buffer = new CircularBuffer<byte>(256);

第三,我循环将数据流读入缓冲区。我在这个循环中设置了一个控件is_full和is_empty。

第四,我创建了一个 void 来解析和计算它。并已进入我的循环。谁要的话,我可以把代码发过去。

感谢@Theraot 的帮助。