Serial Port Communication

Hello,

Project: Create a dialog app to receive serial port input from a microcontroller and display in your GUI.

The Dialog app is created and ready for incorporation of  communication methods.

So,
What is the easiest way to communicate over the serial port using MFC? I have found various classes online and am aware that ActiveX may be a solution but I dont know which to go for / what the benefits of each are.

One ability I will need is to ignore a significant portion of the incoming messages. They will be in the form of several text numbers which I will process, but I only need them at set intervals of a 1/2 second or so.

I'll need guidance in the form of online documentation or code presented here also.

Thanks to everyone.
jkelly061597Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
MazenConnect With a Mentor Commented:
Hi,
 I found the ActiveX "Microsoft Communcations Control" very useful . So i suggest that you use it.
Here is the code for it:
When you first add the ActiveX for your application, first add a variable to it and let be of type control.

Then double click on the icon that shows on your dialog, this will ask you to add a function. Select ok for this function. This function will be called whenever  a character is found at the serial port.
In initdailog put the following code:
{
m_Comm.SetCommPort(1); // or any other port
m_Comm.SetSettings("4800,n,8,1"); // you can change the baud rate
m_Comm.SetPortOpen(TRUE);
}
And in the Fuction created add this:
{
COleVariant myVar;
myVar = m_Comm.GetInput();
CString Inputdata( myVar.bstrVal );
mystring+= Inputdata; // this string has the input data, you can manipulate it

}


to add the activex for your application click on :
project -> Add to Project -> Components and Controls
Choose "Registered ActiveX Controls"


As Crius has mentioned before , you have to add the code for ignoring some data.

Regards

Mazen
0
 
jkrCommented:
See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwbgen/html/msdn_serial.asp ("Serial Communications in Win32") - this is the IMHO most comprehensive article on this issue, and it comes with sample code.
0
 
jkrCommented:
BTW - you might want to check these out, also:

http://www.codeguru.com/network/serial.shtml ("CSerial - A C++ Class for Serial Communications")

http://www.codeguru.com/network/serialport.shtml ("A communication class for serial port")
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
CriusCommented:
Reusing the VCTERM code from the MSDN library would be one of the easiest ways of using MFC to handle comport communications.

The code to either use or ignore incoming strings/values is up to your own switch statements or code, and not actually part of the MFC code/ActiveX/COM control.

Most of the classes in the sample program you won't actually need, but you will need to look at the CMainFrame for samples of how to use the CommCtrl, and you will need to add in the CCommCtrl COM object.
0
 
jkelly061597Author Commented:
Thanks all, I ended up using straight active x as my solution
0
 
gaohuanzxCommented:
Can u give me a specific answer, where to add the activex. do u mean build a new project and then add the project to my own application?
0
 
gaohuanzxCommented:
Can u give me a specific answer, where to add the activex. do u mean build a new project and then add the project to my own application?
0
 
MazenCommented:
Hi gaohuanzx,
  If you look at the menu of VC++ program, you will see the word  "project".(you know, next to :file - edit ...)
Click on it and then click "Add to Project -> Components and Controls".
Your application has to be dialog based inorder to be able to add this activex.
If you need any more help, just ask.
Best Regards,
  Mazen
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.