|
I'm not sure I understand what this is all about, there is no such thing as a self contained DLL application. A DLL is a library that provides classes and/or functions for an executable application. Also your description does not really explain what services your DLL provides to the client application, or why you are trying to switch around owners of windows.
RickiB wrote: How do you get the mouse click of a disabled control? You don't; it is disabled in order to prevent it receiving input.
Veni, vidi, abiit domum
|
|
|
|
|
Hi, I am developing an application which has a WebBrowser control.
By default WebBrowser uses Internet Explorer rendering engine.
Can we change it to Firefox or Google Chrome?
Thanks
Sai
|
|
|
|
|
|
Thank you Rayhan. I'll look into them.
Thanks
Sai
|
|
|
|
|
I'd like to add Awsomium[^]
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
A postfix expression evaluator works on arithmetic statements that take this form: op1 op2 operator . . . Using two stacks, one for the operands
and one for the operators, design and implement a Calculator class that
converts infix expressions to postfix expressions and then uses the stacks
to evaluate the expressions.
This is homework. But I completely could not understand what to do.
Please tell me what to do.
|
|
|
|
|
|
This is an exciting opportunity for you to really increase your programming skills and mastery !
I really can't tell you "what to do" since that would defeat the whole purpose of your education, but I can provide some "clues" that may be useful:
0. know that CodeProject is your friend [^].
1. talk to your teacher, and fellow students: if all the other people in the class are at the same level you are, then probably the others are also finding the problem difficult: ask their advice. if most other people in the class are very advanced compared to you, and the teacher, and your fellow students, are not willing to guide you, reconsider whether you are ready for this course at this time.
2. but, before you talk to your teacher, do the study required to make sure you have a sound knowledge of what infix and postfix notation is, what a stack is.
3. be aware that parsing (interpreting) infix notation of the standard form involves recursion. you have both the native operator precedence rules ... like "multiply before add" ... and the fact that the use of parentheses can change the order in which operators are evaluated.
Study hard, work hard, learn from your mistakes; accept that making mistakes is inevitable, and that acquisition of deep understanding and skill often involve the simultaneous development of both.
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
|
|
|
|
|
Here are some tips I hope are useful to you.
1. One problem at the time. Read your assignment and write down what smaller problems you encounter. Then solve each problem at the time. eg. One problem could be that you need to go from input to calculating output. Divide that and you come to sub-problems: getting the input. Split the input. Do base calculations (+,-,/,*, ...). provide output. Here you can devise another issue. What to do with errors and exceptions, etc... The smallest problems "should" be solvable (and preferably reusable ).
This is an art were many, many, many developers fail ending with programs way too complex...
2.Find sample applications of other calculator applicatons, chances are, someone did something you can re-use.
3. Prototype
If you're not sure about something you want to implement.
hope this helps.
modified 27-Oct-13 15:46pm.
|
|
|
|
|
I am trying to make a serial port terminal and i have succesfully made it except for some problems that i am facing.
i have a button pressing which the terminal starts and the data from the serial port start to get displayed on the textbox.
when i press the button again the serial port closes.
Also i have put the code to read from the serial port in a timer with a time of 1 millisecond. So it automatically works like a loop and the data can be displayed continuously.
Case 1. when i try reading from the serial port using
_SerialPort.ReadLine ()
what happens is that the data is getting displayed perfectly, but i am not able to press the button again to close the serial port, also i cant even close the application. I would have to use the task manager to kill the process.
Case 2. when i try reading from the serial port using
_SerialPort.ReadExisting ()
what happens is that the earlier issue is resolved, but the data that is received is not continuous, that is some values are not recieved.
|
|
|
|
|
ReadLine() blocks until a new line character occurs so you can't expect it to do anything immediately based on a key press unless the key causes a end of line.
If your source for the characters are human input is human than it seems unlikely that ReadExisting() would lose anything. What would be more likely in that case is that your output code is not correctly handling what ReadExisting is returning.
|
|
|
|
|
jschell wrote: If your source for the characters are human input is human than it seems unlikely that ReadExisting() would lose anything.
the characters are not human input. its source is a micro controller ADC output. So it continuously sends data to the serial port.
Parity - Even
Databits - 8
Stopbits - 2
Baudrate - 4800
jschell wrote: ReadLine() blocks until a new line character occurs so you can't expect it to do anything immediately based on a key press unless the key causes a end of line.
The button press calls the
serialport.Close();
so then it shouldn't matter what the
ReadLine() function gets.
|
|
|
|
|
Don't use either of them like that.
Instead, handle the SerialPort.DataReceived[^] event, and get the data in that using ReadExisting - you can then add the data to the textbox in the event handler and you should never lose any data, nor should your UI freeze up.
Remember, Serial ports are very slow devices - data transfer is not instantaneous, nor is it packet based. if you are running your serial port as 9600 baud for example, it will receive one character about every millisecond (7 data bits, 1 parity, 1 start and one stop bit == 10 bits, 9600/10 = 960 characters per second.)
So if you just read once, you will get whatever characters are in teh buffer at that moment, and nevr get any more.
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.
|
|
|
|
|
OriginalGriff wrote: Instead, handle the SerialPort.DataReceived[^] event, and get the data in that using ReadExisting - you can then add the data to the textbox in the event handler
Sorry forgot to mention, i had tried that too...
Same problem. losing data....
|
|
|
|
|
How did you use it? Do you still have the code?
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.
|
|
|
|
|
private void Start_Click (object sender, EventArgs e)
{
if(Start.Text == "Start")
{
Start.Text = "Stop";
_SerialPort.DataReceived += new SerialDataReceivedEventHandler (Port_DataReceived);
}
else
{
Start.Text = "Start";
}
}
private void Port_DataReceived (object sender, SerialDataReceivedEventArgs e)
{
string data = _SerialPort.ReadExisting ();
rtbTerminal.AppendText (data);
rtbTerminal.ScrollToCaret ();
}
private void Start_Click (object sender, EventArgs e)
{
if(Start.Text == "Start")
{
Start.Text = "Stop";
_SerialPort.DataReceived += new SerialDataReceivedEventHandler (Port_DataReceived);
}
else
{
Start.Text = "Start";
}
}
private void Port_DataReceived (object sender, SerialDataReceivedEventArgs e)
{
string data = _SerialPort.ReadExisting ();
rtbTerminal.Invoke (new EventHandler (delegate
{
rtbTerminal.SelectedText = string.Empty;
rtbTerminal.AppendText (data);
rtbTerminal.ScrollToCaret ();
}));
}
I have tried both ways above.
|
|
|
|
|
Um.
You do realize that each time you click the "Start" button, you add another handler to the existing list? So when a character arrives, the same handler method will be called twice, then three times, then four, etc...
And that DataReceived is likely to be called each time a character arrives, since your PC runs rather faster than the serial port does, most of the time?
How I would start:
Add the handler once, when you first construct the SerialPort instance.
Add a bool to enable / disable receive.
When you press the Start button, clear the text from the RTB, then set the bool to enabled.
When you press the Stop button, set the bool to disabled.
In the DataReceived Handler, read the data available. Then, check the bool. If it is enabled, Append the data to the RTB and scroll to the caret. (You shouldn't need an invoke, I don't think). Do not clear the RTB.
If it is disabled, throw the data away!
Try that...
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 have two forms, the first one is the main form and creates the serial port instance and then i pass the serial port object into the second form which is the terminal form.
The following code is the contents of the namespace of the second form
bool Receive_Enable = false;
public Terminal (SerialPort Serial_Port)
{
InitializeComponent ();
_SerialPort = Serial_Port;
_SerialPort.Close ();
_SerialPort.DataReceived += new SerialDataReceivedEventHandler (Port_DataReceived);
}
private void Start_Click (object sender, EventArgs e)
{
if(Start.Text == "Start")
{
Start.Text = "Stop";
_SerialPort.Open ();
Receive_Enable = true;
}
else
{
Receive_Enable = false;
_SerialPort.Close ();
Start.Text = "Start";
}
}
private void Port_DataReceived (object sender, SerialDataReceivedEventArgs e)
{
if(Receive_Enable)
{
rtbTerminal.AppendText (Convert.ToString (_SerialPort.ReadLine ()));
rtbTerminal.ScrollToCaret ();
}
}
Tried this....
Also tried with
_SerialPort.ReadExisting ()
The application freezes after few seconds....
What to do????
Am i doing this right???
modified 25-Oct-13 1:26am.
|
|
|
|
|
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
|
|
|
|
|