Issue
I would like to implement the following idea in C# but I am stuck with this and cannot move on. I want to create more objects from the Class Something and always when I call the method I_Frame I would like to increase the sequence number by 1 (I am trying to test it with a button).
public class Something
{
private int sequenceNumber;
public int SequenceNumber
{
get
{
return this.sequenceNumber;
}
set
{
this.sequenceNumber = value;
}
}
public int I_FRAME(ref byte[] IFrame)
{
IFrame[0] = (byte)((sequenceNumber);
IFrame[1] = 0x00
sequenceNumber=sequenceNumber + 1 % 32768;
return sequenceNumber;
}
and this is my button code.
public partial class VlastniTCP : Form
{
byte[] testbyte = new byte[2];
private void button2_Click(object sender, EventArgs e)
{
Something Test = new Something();
Test.I_Frame(ref testbyte);
textbox1.Text = testbyte[0];
}
}
I would be happy for every advice or explonation how to do it.
Thank you in advance.
Solution
Your problem is that you are creating a new Something
every time you click the button. Something.sequenceNumber
defaults to zero whenever you create a new one. Your options are:
Option 1: Use the same instance of something every time:
public partial class VlastniTCP : Form
{
byte[] testbyte = new byte[2];
private Something test;
private void button2_Click(object sender, EventArgs e)
{
test ??= new Something();
test.I_FRAME(ref testbyte);
textbox1.Text = testbyte[0];
}
}
Option 2: Keep track of the last used sequenceNumber:
public class Something
{
private static int lastSequenceNumber;
public int SequenceNumber { get; set; }
public int I_FRAME(ref byte[] IFrame)
{
var sequenceNumber = (lastSequenceNumber + 1) % 32768;
lastSequenceNumber = sequenceNumber;
SequenceNumber = sequenceNumber;
IFrame[0] = (byte)sequenceNumber;
IFrame[1] = 0x00;
return sequenceNumber;
}
}
Answered By - Nigel Answer Checked By - Robin (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.