如何使用循环缓冲区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 的帮助。
我知道,你们当中有人会因为这个标题而给我减分。但请倾听并提供帮助。如果你给我看和我标题一样的标题,我会删除这个话题。但我不知道如何在这里找到问题。对不起,因为我的英语。
我想读取并处理我从串行端口读取到我的循环缓冲区中的数据。
我可以读取串口。它在 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 的帮助。