Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Connecting to the robot - C# (http://www.chiefdelphi.com/forums/showthread.php?t=121119)

Invictus3593 31-10-2013 11:12

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!

connor.worley 31-10-2013 16:33

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?

Invictus3593 01-11-2013 09:26

Re: Connecting to the robot - C#
 
It never actually connects to the robot to get any data:/

connor.worley 05-11-2013 17:34

Re: Connecting to the robot - C#
 
Have you looked into the TcpClient class?

Invictus3593 05-11-2013 21:00

Re: Connecting to the robot - C#
 
I have not, do you have any good resources you can give me on that?

connor.worley 05-11-2013 23:07

Re: Connecting to the robot - C#
 
MSDN is the place to go for C#. There are some examples further down.

Invictus3593 05-11-2013 23:26

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!

Invictus3593 09-11-2013 09:21

Re: Connecting to the robot - C#
 
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:

"a b c"
" ca b"
"b ca "
"ca b "
As you can imagine, this is very annoying if I'm splitting up the string on the client side and using the three numbers for calculations.

Do I need to change the speed at which I'm reading the string or what's causing the inconsistency?

Fifthparallel 10-11-2013 12:19

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?

Invictus3593 12-11-2013 22:17

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();
            }
        }

Other than the jumbled string, it works great!


All times are GMT -5. The time now is 03:11.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi