|
You didn't say what error it gives.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
when do connect error in this line
conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString();
|
|
|
|
|
Yeah, what is the error message?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Cross-thread operation not valid: Control 'conStatus' accessed from a thread other than the thread it was created on.
|
|
|
|
|
This gives the solution:
Cross Thread Calls[^]
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
thnx
|
|
|
|
|
Hello coders o_O I am making some program where I want to display sensors got from microcontroller via serial port data on two graphs. I am using default VS 2010 chart from toolbox on my win form. However I am facing the problem that there are a big lag on one of these graphs. If I display every sensor data on one graph everything is OK, but if on two, it hangs. I also tried to put some delay (10ms) on getting data from my chip but it does not help.
|
|
|
|
|
Windows isn't a real-time system, and you simply will not be able to refresh the screen every 10 seconds. How about updating it every five seconds? Is there really a need to display it live as being measured? Usually these things are logged and processed in bulk
Bastard Programmer from Hell
|
|
|
|
|
I tried that It doesn't help
|
|
|
|
|
What kind of datasource, and how many records?
..and what does "lag" mean exactly? Is it slow in loading the data, is it painting painfully slow, does it wait a second or two before it starts loading?
Bastard Programmer from Hell
|
|
|
|
|
It takes 12 bytes from microcontroller and there is about 20 records per second. "lag" I did mean its painting slowly (one graph is working perfectly but another is hanging). I did some seconds before loading but it didn't help.
There is data diplay delegate I am using:
private delegate void AddDataToGraphDelegate(int xValue, byte[] yValues);
private void AddDataToGraph(int xValue, byte[] yValues)
{
if (this.InvokeRequired)
{
this.Invoke(new AddDataToGraphDelegate(this.AddDataToGraph), xValue, yValues);
}
else
{
for (int i = 0, k = 0, l = 0; i < 6; i++)
{
l = (yValues[k + 1] << 8) | yValues[k];
sens_data1[i] = ((short)(l));
skaicius[1 + i, xvalue] = sens_data1[i];
k = k + 2;
}
accChart.Series["accel ROLL"].Points.AddXY(xValue, sens_data1[0]);
accChart.Series["accel PITCH"].Points.AddXY(xValue, sens_data1[1]);
accChart.Series["accel YAW"].Points.AddXY(xValue, sens_data1[2]);
gyroChart.Series["gyro ROLL"].Points.AddXY(xValue, sens_data1[3]);
gyroChart.Series["gyro PITCH"].Points.AddXY(xValue, sens_data1[4]);
gyroChart.Series["gyro YAW"].Points.AddXY(xValue, sens_data1[5]);
if (xvalue > 100)
{
accChart.ChartAreas["Acc"].AxisX.Minimum++;
accChart.ChartAreas["Acc"].AxisX.Maximum++;
gyroChart.ChartAreas["Gyro"].AxisX.Minimum++;
gyroChart.ChartAreas["Gyro"].AxisX.Maximum++;
}
Thread.Sleep(50);
if (graph) comport.Write("V");
}
}
modified 23-Mar-12 18:14pm.
|
|
|
|
|
DerecL wrote: and there is about 20 records per second
..and what is the time-resolution of the chart? Does it show the measurements of the last 100 seconds, of everything that's measured since last week? If the user is looking at the last 100 seconds, do you really need 2000 items in that graph, would it be "well enough" to have the average's of the last 100 seconds?
Why is there a Thread.Sleep(50) in there?
Bastard Programmer from Hell
|
|
|
|
|
The main question would be how many points are displayed at once. For any relatively large number of points, you need to uses charts designed for real-time use if you want to update it a lot.
If not all data is displayed, you should remove data that is not visible.
WPF graph might give better performance also as they are typically hardware accelerated.
And between different vendors graphs, technologies or versions, there might be a huge difference of performance. You have to try many of them and see which one you want to buy.
If you have problem when using multiple graphs, then it might be something wrong with how you have setup your data source.
Philippe Mori
|
|
|
|
|
Thank you guys for your help The problem is solved finally
|
|
|
|
|
try ZedGraph. its much more flexible and I have used it for real time updates
http://zedgraph.sourceforge.net
|
|
|
|
|
The Game:
The game consists of randomly generating numbers 1-80 1 at a time until 20 buttons backcolor is changed to a different color.
The Problem:
Currently, the game is picking the numbers way to fast and it appears to be picking them from bottom (button80)to top(button1). The numbers do however seem to be random but I need it to pick the numbers from different parts on the form.
Any help I would greatly appreciate.
|
|
|
|
|
Tailean wrote: Currently, the game is picking the numbers way to fast
Picking a random number is nearly instant. Can you explain what the computer should be waiting for?
Tailean wrote: The numbers do however seem to be random but I need it to pick the numbers from different parts on the form.
Which different parts, and what do they contain?
Can you post the code that you are using to generate the numbers and assing the colors?
Bastard Programmer from Hell
|
|
|
|
|
In Keno, the numbers are selected at random and at a slow speed one by one until 20 numbers are selected.
Also in Keno, there are 80 numbers represented in my program by buttons. Right now it chooses random numbers starting at button80 and working backwards. I need it to pick from a random spot on the form 1 at a time.
Here is the code:
private void button81_Click(object sender, EventArgs e)
{
tokenChecking();
resetColors();
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer2_Tick);
Random random = new Random();
Byte[] randArray = new Byte[20];
random.NextBytes(randArray);
tokenTextBox.Text = "" + tokenTracker;
textBox1.Clear();
for (int i = 0; i <= randArray.Length; i++)
{
returnValue = random.Next(1, 80);
if (returnValue < 0)
{
returnValue = returnValue * -1;
++tracker;
}
if (returnValue == 1)
{
button1.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 2)
{
button2.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 3)
{
button3.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 4)
{
button4.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 5)
{
button5.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 6)
{
button6.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 7)
{
button7.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 8)
{
button8.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 9)
{
button9.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 10)
{
button10.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 11)
{
button11.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 12)
{
button12.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 13)
{
button13.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 14)
{
button14.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 15)
{
button15.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 16)
{
button16.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 17)
{
button17.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 18)
{
button18.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 19)
{
button19.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 20)
{
button20.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 21)
{
button21.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 22)
{
button22.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 23)
{
button23.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 24)
{
button24.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 25)
{
button25.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 26)
{
button26.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 27)
{
button27.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 28)
{
button28.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 29)
{
button29.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 30)
{
button30.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 31)
{
button31.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 32)
{
button32.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 33)
{
button33.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 34)
{
button34.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 35)
{
button35.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 36)
{
button36.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 37)
{
button37.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 38)
{
button38.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 39)
{
button39.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 40)
{
button40.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 41)
{
button41.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 42)
{
button42.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 43)
{
button43.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 44)
{
button44.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 45)
{
button45.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 46)
{
button46.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 47)
{
button47.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 48)
{
button48.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 49)
{
button49.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 50)
{
button50.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 51)
{
button51.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 52)
{
button52.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 53)
{
button53.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 54)
{
button54.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 55)
{
button55.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 56)
{
button56.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 57)
{
button57.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 58)
{
button58.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 59)
{
button59.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 60)
{
button60.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 61)
{
button61.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 62)
{
button62.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 63)
{
button63.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 64)
{
button64.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 65)
{
button65.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 66)
{
button66.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 67)
{
button67.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 68)
{
button68.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 69)
{
button69.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 70)
{
button70.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 71)
{
button71.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 72)
{
button72.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 73)
{
button73.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 74)
{
button74.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 75)
{
button75.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 76)
{
button76.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 77)
{
button77.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 78)
{
button78.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 79)
{
button79.BackColor = Color.Orange;
++tracker;
}
if (returnValue == 80)
{
button80.BackColor = Color.Orange;
++tracker;
}
}
timer1.Stop();
returnValue = 0;
|
|
|
|
|
Change the code to this, click five times;
{
tokenChecking();
resetColors();
timer1.Tick += new EventHandler(timer2_Tick);
timer1.Enabled = true;
MessageBox.Show("Test");
Random rnd = new Random(Environment.TickCount);
Byte[] randArray = new Byte[20];
rnd.NextBytes(randArray);
tokenTextBox.Text = "" + tokenTracker;
textBox1.Clear();
for (int i = 0; i <= randArray.Length; i++)
{
n = rnd.Next(1, 80);
if (n < 0)
{
throw new Exception(
"http://msdn.microsoft.com/en-us/library/2dx6wyd4.aspx");
}
if (n == 0) throw new Exception();
Color someRandomColor = Color.FromArgb(
rnd.Next(0,255),
rnd.Next(0,255),
rnd.Next(0,255));
Controls["button" + n.ToString()].BackColor = someRandomColor;
..to what value has your timer been set? 1000 milliseconds interval?
Bastard Programmer from Hell
|
|
|
|
|
Thank you so much for taking the time to do that. I learnt A LOT from that little bit of info. I am going to mess with my code now =)
|
|
|
|
|
You're welcome
|
|
|
|
|
Hi people I am using 3 panels in a windows form along with 3 buttons. I want to display the panels when I click the buttons respectively. i.e;
When I click button1,panel1 will display and when I click button2,panel2 will display and so on. And if I want to see any panel randomly i should be able to see it.
Please Help people
|
|
|
|
|
Dexter Arora wrote: Please Help people
With what exactly?
Find yourself a good introductory book on programming.
Bastard Programmer from Hell
|
|
|
|
|
I have tried doing that also on all three buttons. keeping a particular panel visible on clicking a particular button its not working.
|
|
|
|
|
What does "it's not working" mean exactly?
Can you paste your code?
Bastard Programmer from Hell
|
|
|
|