|
It should work fine in C#, if you already know the language.
See the SerialPort class for starters: MSDN[^] - the link contains an example - it should handle the communications pretty well.
Display is also pretty trivial - but I'd get the comms part working first, as that's likely to be the most complicated (and hardest to test).
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
While I use Visual Studio C#. Should I choose Windows Forms Application? I got a little bit confused. Let's take a look at the following example.
<a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived(v=vs.110).aspx">http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived(v=vs.110).aspx</a>[<a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived(v=vs.110).aspx" target="_blank" title="New Window">^</a>]
Where should I copy and past this piece of code? Because when I use Forms I got many errors!
|
|
|
|
|
WinForms is not a bad idea - it's probably the simplest after a Console app.
And the example there is a Console app - so you can't just "copy and paste" it and expect it to work.
You could copy and paste it into a Console app and it should compile cleanly (but you need to look at how it works and combine that with your task rather than just trying to code by copy and paste - that really doesn't work for anything more than trivial applications regardless of language)
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Oh shoot! Thanks for the explanation!
|
|
|
|
|
Assuming the picture background doesn't need to change, I would use Windows Forms, and:
0. create a new WinForms project.
1. prepare a background picture using whatever Graphic program I was familiar with, and save it in .jpg or .png format the one of the folders in the WinForms project.
2. on a Form in the project put a PictureBox, re-size it to hold the picture you created; load the picture you created into the Image property of the PictureBox.
3. place a Label with its background color set to be the same as the background of the Form on top of the PictureBox positioned where it's text will appear over the PictureBox so it appears as you show above.
4. as you receive data from the serial port, do the right thing to display the text representation of the data as the 'Text property of the Label.
Since I follow a programming methodology called "The Path of Slack," which holds that laziness is an ultimate value , I might do something like this in WinForms.
1. Put a Panel with BorderStyle set to 'FixedSingle on the Form.
2. repeat steps 3,4 above.
The only thing to watch for in this second approach is to make sure the Panel doesn't "swallow" the Label (while you drag it over the Panel assign the Label to the Panel's ControlCollection).
«If you search in Google for 'no-one ever got fired for buying IBM:' the top-hit is the Wikipedia article on 'Fear, uncertainty and doubt'» What does that tell you about sanity in these times?
modified 19-Nov-14 6:09am.
|
|
|
|
|
Um...Bill! I am a little bit confused! I do not care about how fancy the GUI is. What about the communication part? I would like to get it work and listen to my device first and then plan to add more feature later on!
|
|
|
|
|
The thing is number 4 is not easy to get the data! How am I suppose what to send to receive the phase A values from the meter?!
|
|
|
|
|
|
This program does not receive the data. It looks like terminal but doe snot act like that!
|
|
|
|
|
This program does not receive the data. It looks like terminal but doe snot act like that!
|
|
|
|
|
Yes it does receive and send. I use it dayli to test all our measurement unit Connections with this program
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Then why I have problem to receive data! Anything wrong with .Net Framework version?
|
|
|
|
|
I assume you set the Baudrate,NoOfBit,Parity etc. correctly. If yes then it is usually a question of handshaking (RTS, CTS). This depends very much what the Sender Needs. But if you where sucessfully with another terminal then "simply" check there what Settings are working and Setup SerialPortTerminal with same values.
And have also a look to the code, I think it is easy to understand.
Regards, Bruno
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Hav eyou worked on Electricity meter before?
|
|
|
|
|
Oh! Now got it to work! Just needed to tick the "DTR" option.
|
|
|
|
|
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Yeah! Got it! But now I need to learn how to edit this and have a small window just show that "received" data!
|
|
|
|
|
Step by step. Play a Little bit, analize/modify code. Especally take a look how DataReceived-Hanlder from the serialport component is implemented. This part is the hardest part because one needs this Invoke Thing to avoid crashes between GUI main thread and serialport component threads.
And Keep in mind you always can unzip the original again
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Yeah! It looks easy to modify but in practice it is not at all! Each time I change the GUI and delete something I have bunch of errors! Yes, seems I need to unzip everything and discover every inches!
|
|
|
|
|
Don't worry you will learn this. I learned it also and still have from time to time Problems
One tip: All these visual components have a property "Visible". For the first trials maybe it is easier simply to set this prop to false to hide them.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Ummm... visibility! Good advice Bruno! I will take it!
|
|
|
|
|
I would say it is fast and dirty, but for a Trial who cares
modified 19-Jan-21 21:04pm.
|
|
|
|
|
LOL! These smiley icons make me laugh! Yes, so dirty!
Listen I have a question for you if you don't mind:
How can I run this:
<a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx">http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx</a>[<a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx" target="_blank" title="New Window">^</a>]
Should I use a Form Application? If yes, Why I have too many errors!
|
|
|
|
|
The link you mention is same Serial port class like SerialPortTerminal uses.
I suggest to use WinForms (for me WinForm is the easiest case).
What kind of errors do you have?
Go step by step:
1.) Make a new Project of type c#, Windows Forms Application
2.) Run it...I know this step is more or less meaningless, but even you know if it runs your very base is ok.
3.) Go on with Serial port component (either you create it at runtime with new, like the demoprogram). But it is also possible to drag&drop it from tool box (section Components) to the mainform. In this case you do not have to bother about create it at runtime....and even more most of the properties like Baudrate etc. you can set directly in visual studo.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Bruno!
Thanks for your guidelines. Bill mentioned that I cannot simply copy and paste that MSDN code and run it and expect it to work immediately. As you know when you have an empty Form the code is as follows.
<pre lang="c#">
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
</pre>
But when if you replace it with one of the MSDN codes, the compiler gets many errors such as:
Error 2 'object' does not contain a definition for 'Dispose'
|
|
|
|