Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1107
  • Last Modified:

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.
0
jkelly061597
Asked:
jkelly061597
  • 2
  • 2
  • 2
  • +2
1 Solution
 
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
 
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
MazenCommented:
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
 
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

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
  • 2
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now