|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Connecting to the robot - C#
Hello,
I've been trying to use NetworkStream in C# to connect to the robot, but I can't find a good resource to help me recieve packets from the robot. I've got the labview code that will run using TCP but I'm needing some help on the client side. Anyone Know C# well enough to help, or at least point me to the right resource? Thanks! |
|
#2
|
|||||
|
|||||
|
Re: Connecting to the robot - C#
You should just call NetworkStream.Read, but it sounds like you've already made it that far. What exactly isn't working?
|
|
#3
|
||||
|
||||
|
Re: Connecting to the robot - C#
It never actually connects to the robot to get any data:/
|
|
#4
|
|||||
|
|||||
|
Re: Connecting to the robot - C#
Have you looked into the TcpClient class?
|
|
#5
|
||||
|
||||
|
Re: Connecting to the robot - C#
I have not, do you have any good resources you can give me on that?
|
|
#7
|
||||
|
||||
|
Re: Connecting to the robot - C#
I can't believe I didn't think of MSDN before, I guess my version of VS doesn't have in implemented because I got Express 2012:/
Thanks! |
|
#8
|
||||
|
||||
|
I've got a small labview program writing a string to the stream and then on the client side (written in C#), when I read the stream every 20ms, it comes back jumbled after the first read.
For instance, if I wrote a string "a b c" to the stream, it would read like this for the first four iterations (each line is what is read at 20ms): Quote:
Do I need to change the speed at which I'm reading the string or what's causing the inconsistency? |
|
#9
|
|||
|
|||
|
Re: Connecting to the robot - C#
Can you post a screenshot of your LV server you have running and copy/paste some of the C# you're using?
|
|
#10
|
||||
|
||||
|
Re: Connecting to the robot - C#
Yep!
Here's the server code, really simple LV server, went off a youtube tutorial ![]() Here's the C# code to read the stream, note that this reads every 20ms. Code:
private void timUpdate_Tick(object sender, EventArgs e)
{
//update revolutions X and Y and the Gyro Angle every 20ms from the server string value
//and make sure the connection is solid, otherwise update connection
Byte[] info = new Byte[Client.ReceiveBufferSize];
try
{
int rData = stream.Read(info, 0, System.Convert.ToInt32(Client.ReceiveBufferSize));
RobotData = System.Convert.ToString(rData);
}
catch (System.IO.IOException)
{
lblConnectInd.BackColor = System.Drawing.Color.Red;
Log("The robot ended the stream.");
stream.Close();
Client.Close();
}
//split string into X, Y and angle
strRevX = RobotData.Substring(0, 2);
strRevY = RobotData.Substring(5, 2);
strAngle = RobotData.Substring(8, 2);
//update values recieved in GUI
lblX.Text = strRevX;
lblY.Text = strRevY;
lblAngle.Text = strAngle;
//convert separated strings into doubles
Double.TryParse(strRevX, out dblRevolutionsX);
Double.TryParse(strRevX, out dblRevolutionsY);
Double.TryParse(strAngle, out dblAngle);
//make sure we're still connected
if (Client.Connected == true)
{
lblConnectInd.BackColor = System.Drawing.Color.Green;
}
else
{
lblConnectInd.BackColor = System.Drawing.Color.Red;
timUpdate.Stop();
}
}
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|