|
Help you with what? Write your code for you?? NEVER GOING TO HAPPEN!
|
|
|
|
|
Member 10702142 wrote: please help me out
Sure. Which way did you come in?
|
|
|
|
|
Just pick the nearest drain!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Attendance management system? Seems like you should have been using one of those so that you actually went to your classes and would know what you were supposed to do now ...
|
|
|
|
|
Is it still urgent?
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Would you like fries with that?
|
|
|
|
|
Oh! Yes please - and some onion rings?
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
I am to write (oh boy, another) "simple, easy" interface on a PC to talk to an external box.
Can someone point me to an elementary source of short refresher lessons on C# ?
These thousand page books are great, but way way overkill.
I just need to refresh my mind on how to get text into variables, and so on.
I'm thinking that a five or ten lesson course would be fine to get up and done with this.
In this case I will have some text boxes, a serial port talking to the box, a few buttons for the user to click (possibly only one button; start/stop) and the code will make some decisions based on the user and the box.
It will generally look like this...
- User defines various arrangements of bytes
- PC sends those out
- External box responds
- If box replied with X, then do Procedure X
- If box replied with Y, then do Procedure Y
- If box replied with Z, then do Procedure Z
I have not written any C# in 18 months.
Is there a little 5 or 10 Lesson refresher course freely available that someone here could recommend ? This place (i.e., CodeProject) was quite helpful a couple of years ago. I will be looking around here for other ideas. Pointers to good stuff are welcome
|
|
|
|
|
.NET Book Zero by Charles Petzold immediately comes to mind, and it's free, and on-line: [^].
Please check these posts out for other book recommendations: [^], [^], [^].
“Use the word 'cybernetics,' Norbert, because nobody knows what it means. This will always put you at an advantage in arguments.” Claude Shannon (Information Theory scientist): letter to Norbert Weiner of M.I.T., circa 1940
|
|
|
|
|
I just need to refresh on the elementary stuff; for the moment, how to get a string of text out of a textbox and into my own variable for syntax checking, how to throw up a good/bad response, and that sort of thing.
Are such mundane questions okay here ?
|
|
|
|
|
Considering the mundanity of questions we see all the time, I'm sure it would be fine (either here or in Q&A).
It might be worth searching for tutorials, if you really do mean the elementary stuff.
|
|
|
|
|
C-P-User-3 wrote: how to get a string of text out of a textbox
string myString = myTextBox.Text;
C-P-User-3 wrote: how to throw up a good/bad response Do you mean how to display a MessageBox [^]?
/ravi
|
|
|
|
|
Thanks Ravi, perfect.
What I have is a box where the user Enters hex bytes, and I have a button next to it that says "Check Syntax"
When he clicks, I need to examine the text in the box (thanks for this refresher)...
string myString = myTextBox.Text;
Then I need to pop up an "OK" box with an exit only or a "Bad" box with an okay on it.
We might want to show him the details of which byte was wrong.
In this case, "OK" text will be
-- 0-thru-9
-- A-thru-F
-- An asterisk (Ascii 02Ah)
-- A question mark (Ascii 03Fh)
Oh, just remembered; we want a comma between each element.
I will have to work out the details of White space (none, one, and multiple instances between the digits) and the single digit problem for values 00h thru 0Fh
|
|
|
|
|
It should be very easy to do what you want to do. But your requirements (as stated in your post) are very vague. Are we talking single hex digits, a string of hex digits, etc. Are the * and ? delimiters or terminators? Are they optional? To many questions. You need to be extremely and unabiguously specific if you're going to code any of this.
Also, this begs the question: why validate when you can sanitize (i.e. fix up) the user's input and therefore be more forgiving to the end user and guarantee that the device receives valid data?
/ravi
modified 30-Mar-14 0:19am.
|
|
|
|
|
Okay, new thread time, will do.
|
|
|
|
|
Hello I'm new at c# and I'm running into a cross thread issue.
I'm reading ASCII data from the serial port using the following code below:
I will like to know how to pass RxString to a different Method without getting a cross thread error?
Thanks
public void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
RxString = serialPort1.ReadLine();
label1.Text = RxString;
}
catch (Exception)
{
MessageBox.Show("Data Receive Error: Close Port & Change Baud Rate" );
System.Threading.Thread.Sleep(5000);
bool dataerror = true;
DataRecError(dataerror);
return;
}
this.Invoke(new EventHandler(DisplayText));
i++;
}
|
|
|
|
|
|
Thanks for the link, but I still cannot get it working.
|
|
|
|
|
The problem is the line
label1.Text = RxString; It must not be executed in a thread different than the main thread.
Try following code:
if (InvokeRequired)
{
this.Invoke(new System.Action(() => { label1.Text = RxString; }));
}
else
{
label1.Text = RxString;
}
|
|
|
|
|
excellent, that worked.
Thank you
|
|
|
|
|
I think you can just always call Invoke (or BeginInvoke) for this type of thing, those calls are harmless if called in the main thread.
|
|
|
|
|
I am not sure. In the example above, I used a lambda which does not call the function again, and that might work.
But with "normal" code like
delegate void VoidDelegate();
void SomeFunction()
{
if (InvokeRequired)
{
this.Invoke(new VoidDelegate(SomeFunction));
return;
}
}
you'll run into a StackOverflow exception when omitting the InvokeRequired... Hence I always use that "safer" version, though it might not be necessary in every case.
|
|
|
|
|
That's a different situation though, that's a 'make this method self-marshalling' rather than 'marshal this method call'. The StackOverflowEx is pretty obvious if you don't guard this. If you put the responsibility on the caller (i.e. they must use control.Invoke(() => control.SomeFunction())), or you provide an explicit SomeFunctionAsync (using BeginInvoke) then it's not an issue.
On a different note you don't need to define a void delegate type, MethodInvoker exists for this already.
|
|
|
|
|
I am coming from Texas instruments Forum (MSP430f47197) due to my curiosity on C# and serial communications!
I just started to make a GUI that can communicate with two energy meters and read their voltage, current, power factor, and the Active power as well.
The GUI itself was easy for me as I saw a couple of Youtube videos and learnt how to make forms in Visual Studio.
The confusion and ambiguity was started when I noticed that I need to make the PC connected to the serial port and most importantly, read the values. Moreover, for one out of two meters I need to write as well and return that back to the GUI!
As I am new in Serial communication and C# stuff, what do you think of this project? Is this doable?
I have the code for one of the energy-meters. The code which is written in the CHIP of the board is partially modified by me and I am almost familiar with.
But the other energy-meter is not. It is just a black-box and I have only some h files! Is this possible to talk to such energy meter?
I would like to know how much time do I need and where is the best point to start with?
I have divided the steps for my project as follows. However your feedback and comments much more appreciate it.
1. Receiving data from the E-meter code through Hyper-terminal or other monitoring software.
2. Receiving the Voltage from the SPM without decimal points via Hyper.
3. Receiving the Voltage from the SPM Using C#.
4. Modifying the Voltage from the SPM Using C# and sending it back to the MCU and showing the modified version of Voltage on the display.
5. Receiving the Voltage from the Radian-meter Using C#.
6. Comparing voltage from SPM to Radian-meter and calculate the offset and sending back to SPM.
P.S.
SPM: energy-meter 1
Radian-meter: energy-meter 2
Voltage: Just as an example to get one value.
|
|
|
|
|
Doable? Sure.
Doable by you? We have no idea since we can't get inside your head and find out exactly what you know and don't know.
This is not a project for a newbie in C#/Windows programming.
There are more to your list of "steps" than what you've got. Two-way Serial communication without blocking the UI and threading issues (updating controls from background threads) are going to be your biggest design roadblocks.
Don't make the mistake of believing that "oh, I'm not using any threads so I'll be OK". With the serial port classes, you're using background threads. You just don't know it.
|
|
|
|