Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16496877
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:53:16

下载本文示例代码
  在VC 中有两种方法可以进行串口通讯。一种是利用Microsoft公司提供的ActiveX控件 Microsoft Communications Control。另一种是直接用VC 访问串口。下面将简述这两种方法。  一、Microsoft Communications Control  Microsoft公司在WINDOWS中提供了一个串口通讯控件,用它,我们可以很简单的利用串口进行通讯。在使用它之前,应将控件加在应用程序的对话框上。然后再用ClassWizard 生成相应的对象。现在我们可以使用它了。  该控件有很多自己的属性,你可以通过它的属性窗口来设置,也可以用程序设置。我推荐用程序设置,这样更灵活。   SetCommPort:指定使用的串口。   GetCommPort:得到当前使用的串口。   SetSettings:指定串口的参数。一般设为默认参数"9600,N,8,1"。这样方便与其他串口进行通讯。   GetSettings:取得串口参数。   SetPortOpen:打开或关闭串口,当一个程序打开串口时,另外的程序将无法使用该串口。   GetPortOpen:取得串口状态。   GetInBufferCount:输入缓冲区中接受到的字符数。   SetInPutLen:一次读取输入缓冲区的字符数。设置为0时,程序将读取缓冲区的全部字符。   GetInPut:读取输入缓冲区。   GetOutBufferCount:输出缓冲区中待发送的字符数。   SetOutPut:写入输出缓冲区。  一般而言,使用上述函数和属性就可以进行串口通讯了。以下是一个范例。 #define MESSAGELENGTH 100class CMyDialog : public CDialog{protected: VARIANT InBuffer;VARIANT OutBuffer;CMSComm m_Com;public:......}BOOL CMyDiaLog::OnInitDialog(){CDialog::OnInitDialog();m_Com.SetCommPort(1);if (!m_Com.GetPortOpen()) {m_Com.SetSettings("57600,N,8,1");m_Com.SetPortOpen(true);m_Com.SetInBufferCount(0);SetTimer(1,10,NULL);InBuffer.bstrVal=new unsigned short[MESSAGELENGTH];OutBuffer.bstrVal=new unsigned short[MESSAGELENGTH];OutBuffer.vt=VT_BSTR;}return true;}void CMyDiaLog::OnTimer(UINT nIDEvent) {if (m_Com.GetInBufferCount()>=MESSAGELENGTH) {InBuffer=m_Com.GetInput();// handle the InBuffer. // Fill the OutBuffer. m_Com.SetOutput(OutBuffer);}CDialog::OnTimer(nIDEvent);}  用该控件传输的数据是UNICODE格式。关于UNICODE和ANSI的关系和转换请参看MSDN。   关于该控件的其他详细资料请查看MSDN关于COMM CONTROL部分。共2页。 1 2 :   在VC 中有两种方法可以进行串口通讯。一种是利用Microsoft公司提供的ActiveX控件 Microsoft Communications Control。另一种是直接用VC 访问串口。下面将简述这两种方法。  一、Microsoft Communications Control  Microsoft公司在WINDOWS中提供了一个串口通讯控件,用它,我们可以很简单的利用串口进行通讯。在使用它之前,应将控件加在应用程序的对话框上。然后再用ClassWizard 生成相应的对象。现在我们可以使用它了。  该控件有很多自己的属性,你可以通过它的属性窗口来设置,也可以用程序设置。我推荐用程序设置,这样更灵活。   SetCommPort:指定使用的串口。   GetCommPort:得到当前使用的串口。   SetSettings:指定串口的参数。一般设为默认参数"9600,N,8,1"。这样方便与其他串口进行通讯。   GetSettings:取得串口参数。   SetPortOpen:打开或关闭串口,当一个程序打开串口时,另外的程序将无法使用该串口。   GetPortOpen:取得串口状态。   GetInBufferCount:输入缓冲区中接受到的字符数。   SetInPutLen:一次读取输入缓冲区的字符数。设置为0时,程序将读取缓冲区的全部字符。   GetInPut:读取输入缓冲区。   GetOutBufferCount:输出缓冲区中待发送的字符数。   SetOutPut:写入输出缓冲区。  一般而言,使用上述函数和属性就可以进行串口通讯了。以下是一个范例。 #define MESSAGELENGTH 100class CMyDialog : public CDialog{protected: VARIANT InBuffer;VARIANT OutBuffer;CMSComm m_Com;public:......}BOOL CMyDiaLog::OnInitDialog(){CDialog::OnInitDialog();m_Com.SetCommPort(1);if (!m_Com.GetPortOpen()) {m_Com.SetSettings("57600,N,8,1");m_Com.SetPortOpen(true);m_Com.SetInBufferCount(0);SetTimer(1,10,NULL);InBuffer.bstrVal=new unsigned short[MESSAGELENGTH];OutBuffer.bstrVal=new unsigned short[MESSAGELENGTH];OutBuffer.vt=VT_BSTR;}return true;}void CMyDiaLog::OnTimer(UINT nIDEvent) {if (m_Com.GetInBufferCount()>=MESSAGELENGTH) {InBuffer=m_Com.GetInput();// handle the InBuffer. // Fill the OutBuffer. m_Com.SetOutput(OutBuffer);}CDialog::OnTimer(nIDEvent);}  用该控件传输的数据是UNICODE格式。关于UNICODE和ANSI的关系和转换请参看MSDN。   关于该控件的其他详细资料请查看MSDN关于COMM CONTROL部分。共2页。 1 2 : 下载本文示例代码


VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯VC 的串口通讯
阅读(204) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~