|
First off, stop opening and closing it - just leave it open. That ensures that nothing else can get at the port, since serial ports need exclusive locks.
ReadLine is also unhelpful - it will always block until a newline is received, so if whatever device is on the other end of the connection doesn't use the same newline as your PC, it will never return.
So, try this:
bool Receive_Enable = false;
public Terminal (SerialPort Serial_Port)
{
InitializeComponent ();
_SerialPort = Serial_Port;
_SerialPort.Open ();
_SerialPort.DataReceived += new SerialDataReceivedEventHandler (Port_DataReceived);
}
private void Start_Click (object sender, EventArgs e)
{
if(Start.Text == "Start")
{
Start.Text = "Stop";
Receive_Enable = true;
}
else
{
Receive_Enable = false;
Start.Text = "Start";
}
}
private void Port_DataReceived (object sender, SerialDataReceivedEventArgs e)
{
if(Receive_Enable)
{
int bytes = _SerialPort.BytesToRead;
byte[] data = new byte[bytes];
_SerialPort.Read(data, 0, bytes);
string s = System.Text.Encoding.ASCII.GetString(data);
Console.WriteLine(s);
rtbTerminal.AppendText(s);
rtbTerminal.ScrollToCaret();
}
} You may want to play with the Encoding later, but that should be pretty safe.
The Console output is just for debugging - it shows you what is received, in what chunks.
The only instant messaging I do involves my middle finger.
English doesn't borrow from other languages.
English follows other languages down dark alleys, knocks them over and goes through their pockets for loose grammar.
|
|
|
|
|
Did just that as you said now, Removed all the
SerialPort.Close()
No change, output is good, but the application freezes after a while.
When i try to make the terminal as earlier without event handler i am getting a perfect output with
ReadExisting() But using the eventhandler, it just doesn't work as expected
|
|
|
|
|
I use:
stream = port.BaseStream ;
...
byte[] buffer = new byte [ port.ReadBufferSize ] ;
...
stream.Read ( buffer , 0 , buffer.Length ) ;
And I run the reader in a thread that raises events.
|
|
|
|
|
I have a custom user control.
This user control is placed on a base form and now the form inherits this user control.
I have 5 other forms that inherit from this base form so they have all the properties of the base form and also the properties from the user control.
When I go to update my user control(change background color etc),
The control on the base form gets updated since of course it is directly inherited to the user control, but the control on the other forms that are linked to this base form do not update.
What could be the problem?
|
|
|
|
|
deebow wrote: This user control is placed on a base form and now the form inherits this user control.
Unlikely. A form inherits from the Form class (or it isn't a form...), and a UserControl inherits from Control.
You can't inherit from two classes in C#, so you would have to choose which to base the form on - and I'm guessing Form.
As a result, it may encapsulate the user control, but it doesn't inherit from it. If your derived form classes inherit from YourForm, then they will get the encapsulated UserControl, but unless it is Public (bad) of Protected they probably can't access it.
I suspect your problem needs looking at in a little more depth...
The only instant messaging I do involves my middle finger.
English doesn't borrow from other languages.
English follows other languages down dark alleys, knocks them over and goes through their pockets for loose grammar.
|
|
|
|
|
Hi Og, I think in this case the OP is using the word "inherit" loosely, to refer to an instance of a UserControl on a Form. As you'll see if you read my response (written evidently during the period you were posting yours), there are some "Halloween" surprises with UserControls; perhaps you can enlighten me on what I observe in VS 2012.
bill
Google CEO, Erich Schmidt: "I keep asking for a product called Serendipity. This product would have access to everything ever written or recorded, know everything the user ever worked on and saved to his or her personal hard drive, and know a whole lot about the user's tastes, friends and predilections." 2004, USA Today interview
|
|
|
|
|
I find what you describe pretty strange; what I would expect to see is:
1. once you have put an instance of the UserControl on the "base form:" changing the design-time appearance of the UserControl would not update the appearance of the instance of the UserControl on the base form. When you create an instance of a Form, or UserControl, you have broken the links between attributes.
However, if you go back and add an EventHandler to your UserControl for an Event like 'Click, I'd expect that Event to fire in the instance of the UserControl added to a Form.
Sorry to say that I can't explain this "dis-connect."
2. however, changing the appearance of the UserControl instance on the base form should change the appearance of the (now locked) UserControl instance that appears in the Forms that inherit from the base form ... as soon as you recompile.
It might help if you describe what Forms are launched when your application starts. Obviously you cannot launch a Form that inherits from a "base form" from within the "base form:" you'll get a StackOverflow error.
You are not the only one to find strange things happen when you have a UserControl on a Form and other Forms inherit from that Form. I use Visual Studio 2012, and compile against FrameWork 4.5: if I put an instance of a UserControl on a Form, and have two other Forms inherit from that Form: the UserControl instance on the first Form (seen at design time) disappears, and doesn't appear in the PropertyGrid Browser for that Form ! But, if instances of all three Forms are created and shown at run-time by a fourth Form: the UserControl appears on all of them.
It would seem logical that any change to any aspect of a UserControl, BackColor, or whatever, would propagate through all instances of the UserControl on various Forms the moment you re-compile.
Google CEO, Erich Schmidt: "I keep asking for a product called Serendipity. This product would have access to everything ever written or recorded, know everything the user ever worked on and saved to his or her personal hard drive, and know a whole lot about the user's tastes, friends and predilections." 2004, USA Today interview
|
|
|
|
|
BillWoodruff wrote: once you have put an instance of the UserControl on the "base form:" changing the design-time appearance of the UserControl would not update the appearance of the instance of the UserControl on the base form.
Not quite true - if you change the background colour of the control from Red to Blue for example, you are right - the Form instance will stay Red. And it's annoying.
But if you add a button, say...then the button will be added to the form instance of the control as soon as you rebuild. On a Red background...
Add a new control instance, and it's blue, of course!
There are times when I hate Microsoft...
The only instant messaging I do involves my middle finger.
English doesn't borrow from other languages.
English follows other languages down dark alleys, knocks them over and goes through their pockets for loose grammar.
|
|
|
|
|
Yes my understanding is that once I update the usercontrol it should propogate through all forms that have that control but it doesnt.
I have
A) User Control
Class SearchControl :UserControl
B) Form that contains an instance of Usercontrol A
Class FormWhatever : UserControl
C) Forms that inherit from B which also contains an instance of A
Class FormA : FormWhatever
If I update A, B is updated correctly but C remains in its original state that it was created even after compile and runtime.
2) The form that is loaded at program start is the usercontrol. The base control isn't loaded unless the user chooses to go into that form. The other forms arent loaded of course until the base is loaded since they are loaded by user button presses from the base form
|
|
|
|
|
I'd like to help you with this, but what you observe is different than what I observe in Visual Studio 2012 (and what I observe is also different from what OriginalGriff observes).
I don't understand this:
B) Form that contains an instance of Usercontrol A
Class FormWhatever : UserControl If you create a Form, and then set it to inherit from a UserControl, it is no longer a Form, but a UserControl ! Yes, you can put an instance of the same UserControl that a Class inherits from "in/on" the same UserControl, but, why would you ? You've created the equivalent of a person holding a tv-screen showing a picture of themselves
And, this:
2) The form that is loaded at program start is the usercontrol. You cannot start a WinForms .NET program with a UserControl: you'll get a compile-time error like this: "Error 2 Argument 1: cannot convert from '...UserControl.Form#' to 'System.Windows.Forms.Form"
And, this:
The base control isn't loaded unless the user chooses to go into that form. what do you mean by "go into that Form" ?
If your goal here is to provide all the secondary Forms in your Application with a common search facility, and you wish to use a "Main Form" as a kind of "master-controller" from which you show the secondary Forms:
1. create a new WinForms app: design your Main Form
2. create a new UserControl: design it. implement Public Properties, Methods, etc., ... or Events ... so that consumers of the UserControl can use/access information inside the UserControl
3. create a secondary Form template which will serve as a base for all secondary Forms: put an instance of the UserControl on it. Do not "show" this template Form. this Form should not inherit from anything.
4. at design-time, you can define new instances of the secondary Form template by setting them to inherit from the secondary Form template rather than "Form."
5. or, at run-time, you can create new instances of the secondary Form Template as needed in response to the end-user's actions, and display them on screen where you want them.
What you may need to do to "keep track" of any secondary Forms which have been created at run-time may vary depending on what your Application does.
Keep it simple, keep it clean, and prepare to be confused
bill
Google CEO, Erich Schmidt: "I keep asking for a product called Serendipity. This product would have access to everything ever written or recorded, know everything the user ever worked on and saved to his or her personal hard drive, and know a whole lot about the user's tastes, friends and predilections." 2004, USA Today interview
|
|
|
|
|
Exemple stetment
foreach (DataGridViewRow row in gridControl1.Rows)can't Rows
{
mailbody += "<tr>";
foreach (DataGridViewCell cell in row.Cells)
{
mailbody += "<td>" + cell.Value + "</td>";
|
|
|
|
|
And your question is?
Veni, vidi, abiit domum
|
|
|
|
|
Member 10270825 wrote: can't Rows
I'm not surprised.
The DevExpress GridControl doesn't have a Rows property: DevExpress GridControl Members[^] - and even if it did, it is very, very unlikely to return DataGridViewRow values - they are associated with the .NET DataGridView control...
The only instant messaging I do involves my middle finger.
English doesn't borrow from other languages.
English follows other languages down dark alleys, knocks them over and goes through their pockets for loose grammar.
|
|
|
|
|
|
I want to use Roulette wheel selection for function minimization and want to select parents for reproduction from the fitness values. I want to ask is this necessary to sort the fitness (in ascending or descending order) values calculated from the population size or not?
|
|
|
|
|
You can use random number generation to simulate roulette wheel output.
Try something and post your code here.
|
|
|
|
|
You may want to read up on "Roulette Wheel Selection[^]" before you stick your foot in your mouth again.
modified 24-Oct-13 12:33pm.
|
|
|
|
|
Weird - but the link is not working?
|
|
|
|
|
*Cough* ahem[^]. I assume you ate the rest of the foot
|
|
|
|
|
Hmmm... It pasted back into a browser window just fine before I pasted it into the post.
Fixed!
|
|
|
|
|
In the book I'm studying and the articles at MSDN, they both say pretty much the same thing…
Just to clarify, in my book it uses this example:
Parent Class
{
}
Child Class
{
}
Grandchild Class
{
}
GreatGrandchild Class
{
}
The Base Class for Great-Grandchild Class would be the Grandchild Class
The Base Class for The Grandchild Class Would Be the Child Class
The Base Class for the Child Class Would Be the Parent Class
If that is true, in both my book and the articles at MSDN also say if I want to call a method that resides in the parent class from great-grandchild class to use the "base" keyword before the method…
Just a little confusing, maybe I read it wrong and misunderstood it.
Any feedback would be greatly appreciated.
|
|
|
|
|
You are right in your assumptions.
Just to correct your code a little bit though -
Parent Class
{
}
Child Class : Parent
{
}
Grandchild Class : Child
{
}
GreatGrandchild Class : Grandchild
{
}
|
|
|
|
|
First of all, you need a method or property which is declared "virtual". That allows you to "override" it in derived classes.
When you override such a virtual function, but need to call the functionality of the original implementation also, you use the base keyword:
public class Parent
{
public virtual void FunctionOne()
{
}
}
...
public class GreatGrandChild : GrandChild
{
public override void FunctionOne()
{
Console.WriteLine("Called in GreatGrandChild");
base.FunctionOne();
}
}
Otherwise, you can access the functions of the base which are not overriden just like any other function of a class, and beyond that you can access "protected" functions/properties.
|
|
|
|
|
Yes, That's Obvious… Or so I thought it was.
|
|
|
|
|
I wanted to create a application in which there will be 10 to 12 users(clients) and database at one place(server).
My Qs is how to create this kind of application and what technology should I use between these..Windows ? or Web based ?.
Pls tell me how to implement this kind of app.
Pls give links to sample application if anyone knows..
thanks in advance.
|
|
|
|