|
Friend I do a project in C#.I am new to C#.I need to know about:
1)How to plot the real time data that come every second from com port into the Graph
2)Running on the low priority thread,that logs data into table for that day in DB(MySQL) should store one day data
next day clean the old data and store current Data only.I am unable to rectify that Problem.Please give me solution for that.
Thank you for Reading
|
|
|
|
|
This is a broad concept and might require me to forward you to some other resources to learn more on these facilities. For example, the first thing is creating charts is itself a broad thing to do and mostly you might require a third-party library to create charts in your C# application. You forgot to mention which framework you're going to use, WPF or Win Forms etc.
You can however, try to do a little Google for this chart library and Google would yield a lot of friendly results for you to use any of those libraries. Try out this Google search[^] (chart C#).
Once that has been done the other thing that you've said about constantly updating the chart requires you to run a function (for creating the chart) after every instance of time (which in your case, might be a function call, a time interval like 1 second, or any other condition or event) to let your chart get updated every time there is a new data. It totally depends on your application and how you implement this updating-the-UI-feature. An example of such might be using the Timer class, to run your application after a time interval. But what I would like to advise here would be to run your application, each time a new data is saved in the database. Create a function like StoreData() and then inside this function, run other function to update the chart. This would save you time, and would cause the application to update its UI only when a new data is added.
If you want to delete the data from MySQL database, you can simply pass the command of DELETE to the data source (server) and it would delete all of the data. Otherwise, if you're going to delete the data from the thread only, then you can try to create a new instance of that thread every day and so on.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
Too much for a quick answer, but we can give you some first steps. Try that and come back with more specific problems when needed.
First of all, if you're a beginner you're probably in over your head, if you have a senior developer to ask questions to, do that.
Secondly, you'll need to divide your problem into smaller problems. for instance you could separate your data to graph problem by creating a module that reads the com port and just saves the data to database. A second problem would then be to read the data from database and put into a graph. A third, again separate module would check which data should be removed and removes it.
Make sure to use a layered and modular approach. Take in account risks (what happens if data could not be read from com port, or removed the next day? What happens if one of the modules falls out, ...).
With that in mind, steer away from any IDE you're using and start opening up documents to create a good design:
- what are the object definitions and how are they moved around both in database as in code?
- what are the possible modules and what are there tasks?
- Who can use which part of the system?
- What technologies will you use for the graph system (some prototyping will need to be done)
- Try to imagine how the system would grow.
- What exceptions or problems could arise?
- ...
good luck.
|
|
|
|
|
Hi!
In my base class I want a "constant" FUNC_LENGTH that I assign at creation of my first object. I´d like to have it static. So I tried this:
public abstract class Package
{
private static readonly int funcLength;
protected static int FUNC_LENGTH { get {return funcLength;} }
static Package(int _funcLength)
{
funcLength = _funcLength;
}
public Package() {}
...
}
Obviously this wont work, since a static constructor wont take any parameters. Does this mean it is impossible to make FUNC_LENGTH static?
I read in a book that the static constructor is run once "before first use", does that mean it runs when (or immediately before) the first instance of the class is created?
modified 12-Jan-15 3:01am.
|
|
|
|
|
What you probably want is a Singleton design: see here[^]
|
|
|
|
|
No, I dont think so. My class is an abstract base class (I just updated the code above). So I will actually have several instances of this class subclasses. Its part of a communication protocol, so I want to define this specific package field size (FUNC_LENGTH) before creation of the first package. After that there must not be any way to change that size, or the communication will break down.
The singleton is, as I know it, a class that can only have one single instance. Correct me if Im wrong.
|
|
|
|
|
ok, I misunderstood, I would probably have a private static boolean that indicates if the func_length was set or not. In that case you may pass anything you want, but only the first will update the property.
I'm sure there are better solutions, but I think it would work and it is pretty simple.
|
|
|
|
|
Snap!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I swear I didn't see your reply
|
|
|
|
|
Didn't think you did!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
It's not impossible, but it is nasty. Very nasty!
As you say, you can't have a static constructor with a parameter - because static constructors are never called from your code directly, but by the system immediately prior to the first instance being created, so it can't call a parametrized one. So it has to be a parameter to an instance constructor: which means a check is needed:
public abstract class Package
{
protected static int FUNC_LENGTH { get; private set; }
private static bool onceAlready = false;
public Package(int _funcLength)
{
if (!onceAlready)
{
FUNC_LENGTH = _funcLength;
onceAlready = true;
}
}
...
}
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Depending on where you're getting the value to set funcLength to, maybe you could read it from a config inside the static constructor?
|
|
|
|
|
A config file would work, of course, but the value wont ever change between compilations. It seems more streamlined to just set it via the constructor when creating the package factory class. Then the factory class will pass it to the package instances.
I guess a static boolean would work, just thought there would be a more slick way to do it (I actually have more than one of those "constants").
Maybe I just skip the static part. Feels like a defeat though.
|
|
|
|
|
If the value wont' change between compilations, why not just make it a const value? They are effectively static anyway. Or is it a complex calculation that has to be done at run time? You can't do it as a "prebuild step" or similar? I do something similar to that to time stamp assemblies with the build date / time: Timestamping assemblies with Build date and time.[^]
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Uhm, didnt think of a const being static, but of course you´re right on that one. Great, const it is!
|
|
|
|
|
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I was too quick there. This is a lib, so when using this lib by creating a Package object, you will pass the value into its constructor. So I cant use a const here.
|
|
|
|
|
So it's not fixed at compile time - and you're back to a static bool I'm afraid!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
|
yeah, the static contructor is run by .net and without arguments ;
and the static method runs when the class's instance or static members(method or property) is referred
|
|
|
|
|
If you are familiar with the dying games from Storm8 I am looking for some help. If you know what an AutoHealer is then you are looking at the right article, you see I know absolutely no programming languages, I'm good with a computer let's say debugging.troubleshooting and general putting together a PC, but programming I don't have the time to learn. And I would like a software made, I already made a GUI and such and have the idea in my head I just need someone to actually make the idea into a program. I was told the best language for this sort of tool would be C# being as it's fast and can handle complex tasks, but this isn't so much a complex task. Just curious as to if someone can help me out with this.
|
|
|
|
|
Technically, that is cheating. And (since I have no idea what the "dying games from Storm8" involve) since that can in some games involve money (real or virtual) that's not something we would normally get involved in, as there is a good chance that that is malicious code - it may involve a real financial penalty for others if you can't die and thus steal their stuff...
We do not condone, support or assist in the production of malicious code in any way, form or manner. This is a professional site for professional developers.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I completely understand that is cheating, people have been doing it for years, and in no way would it be classified as malicious in any way, in fact it would be helping players advance in the game at a semi-natural pace.
|
|
|
|
|
No, it would give an advantage to players who used it, even if there are existing cheats out there - and if there are, why would you need to write your own?
Since it gives you an advantage, it's cheating!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Because right now there are none fast enough or good enough for the task I have at hand.
|
|
|
|