友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

VC语言6.0程序设计从入门到精通-第66部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!


void SetmPort(short nNewValue)和 short GetmPort() 。  



    (2 )Settings 属性  

    该属性用于设置或返回数据传输率、奇偶校验、数据位和停止位参数,其属性值格式为 

“BBBB;P;D;S ”。  

    其中  BBBB  为数据传输率,P       为奇偶校验,D      为数据位,S     为停止位。默认值为 

 9600;N;8;1 ”。  

“ 

    该属性对应的函数为 void SetSettings(LPCTSTR lpszNewValue)和 String GetSettings()。  



    (3 )PortOpen 属性  

    该属性用于设置或返回串口状态,值为 TRUE  时打开,值为 FALSE  时关闭。如果要打 

开端口,则必须现设置 mPort 属性。  

    该属性对应的函数为 void SetPortOpen(BOOL bNewValue)和 BOOL GetPortOpen() 。  



    (4 )Input 属性  

    该属性用于从接收缓冲区中读取数据,其对应的函数为 VARIANT GetInput() 。  



    (5 )InputMode 属性  

    该属性用于设置或返回从接收缓冲区读取数据的格式,属性值为 0 时表示以文本格式读 

取数据;属性之为 1 时表示以二进制格式读取数据;属性值为 2 时表示以十六进制格式读取 

数据。  

    该属性对应的函数分别为 void SetInputMode(long nNewValue)和 long GetInputMode() 。  



    (6 )InBufferCount 属性  

    该属性用于设置或返回在接收缓冲区中等待的字符数,该属性在端口未打开时不可用。 



 ·322 ·  


…………………………………………………………Page 334……………………………………………………………

                                                                    第 11 章    网络编程  



对应的函数为 void SetInBufferCount(short nNewValue)和 short GetInBufferCount() 。  



    (7 )InBufferSize 属性  

    该 属 性 用 于 设 置 或 返 回 接 收 缓 冲 区 大 小 的 字 节 数 , 其 对 应 的 函 数 分 别 为               void  

SetInBufferSize(short nNewValue)和 short GetInBufferSize() 。  



    (8)Output 属性  

    该属性用于向发送缓冲区中写入数据,其对应的函数为 void SetOutput(const VARIANT&  

newValue) 。  



    (9 )OutBufferCount 属性  

    该属性用于设置或返回在发送缓冲区中等待的字符数,该属性在端口未打开时不可用。 

其对应的函数分别为 void SetOutBufferCount(short nNewValue)和 short GetOutBufferCount() 。  



    (10)OutBufferSize 属性  

    该 属 性 用 于 设 置 或 返 回 发 送 缓 冲 区 的 字 节 大 小 , 对 应 的 函 数 分 别 为                   void  

SetOutBufferSize(short nNewValue)和 short GetOutBufferSize() 。  



    (11)mEvent 属性  

    该属性用于设置或返回串口事件,其对应的函数分别为                                void  SetmEvent(short  

nNewValue)和 short GetmEvent() 。常见的串口事件如表 11…13 所示。  



    表 11…13                         常见串口事件  



            常数                      取值                          描述  

 EvSend                   1                   发送事件  

 EvReceive                2                   接收事件  

 EvCTS                    3                   clear…to…send 线的状态发生变化  

 EvDSR                    4                   data…set ready 线的状态发生变化  

 EvCD                     5                   carrier detect 线的状态发生变化  

 EvRing                   6                   检测到震铃信号  

 EvEOF                    7                   收到文件结束字符  



    (12)RThreshold 属性  

    该属性用于设置或返回 RThreshold 数值,所谓 RThreshold 数值是通过 MSm 控件将 

mEvent 属性设置为 EvReceive,并在产生 Onm 事件之前所接收的字符数。  

    该属性对应的函数为 void SetRThreshold(short nNewValue)和 short GetRThreshold() 。  



11。5。2    利用 MSm 控件编程的基本流程  



    利用 MSm 控件编程的基本流程如下。  

    o  在当前 Project 中插入 MSm 控件;  

    o  初始化并打开串口;  

    o  捕捉串口事项;  

    o  串口读写;  

    o  关闭串口。  



                                                                              ·323 ·  


…………………………………………………………Page 335……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



11。5。3    利用 MSm 进行串口通信  



实例 11…2:MSm 控件使用实例。源代码在光盘中“11实例 11…2MSm”目录下。  



     本节通过编写一个小程序来实现利用 MSm 控件进行串口数据传输。  

     新建一个基于对话框的 MFC 工程,取名为 MSm 。依次单击菜单栏的“Project ”→ 

“Add To Project ”→“ponents and Controls ”,弹出添加控件对话框,如图 11…16 所示。然 

后打开“Registered ActiveX Controls ”文件夹,选中“Microsoft munications Control ,vision  

6。0 ”控件,将其添加到工程中,如图 11…17 所示。  



                                                                                        



          图 11…16    添加控件对话框                                               图 11…17    加入 MSm 控件  



     然后编辑对话框界面,完成后的效果如图  11…18 所示(本例中,用于选择串口的控件为 

bo Box 控件,在为对话框添加 bo Box 控件的时候,需要为该 bo Box 控件加入 



1 和 2 两个数据,分别表示串口 1 和串口 2 ),其中控件                       就是 MSm 控件。  



    注意:在为 bo Box 控件添加数据的时候,如果数据多于一个,则在添加后面数据的时候,要 



          按住 Ctrl 键,同时按回车键进行换行,而不是直接用回车键进行换行。  



                                                              



                                   图 11…18    对话框界面  



     为对话框添加完控件后,需要设置各控件 ID,并为其添加变量。各控件的 ID 及其对应 

的变量如表 11…14 所示。  



 ·324 ·  


…………………………………………………………Page 336……………………………………………………………

                                                                                     第 11 章    网络编程  



     表 11…14                             各控件 ID 及对应变量  

               控件                                  ID                                变量  

 MSm 控件                          IDC_MSM                         CMSm m_m  

 接收数据 Edit                          IDC_RECEIVEDATA                    CString m_Receive  

 发送数据 Edit                          IDC_SENDDATA                       CString m_Send  

 选择串口下拉列表                           IDC_BOLIST                      int m_Port (初始化为0 )  

 打开串口按钮                             IDC_OPENPORT                       无  

 关闭串口按钮                             IDC_CLOSTPORT                      无  

 发送按钮                               IDC_SEND                           无  



     在文件“MSmDlg。h ”的头部加入语句#include  〃msm1。h〃 ,然后为对话框类加入 

成员函数 void Initm() ,来初始化 MSm 控件,其代码如下:  



     void CMSmDlg::Initm()  



     {  



          //设置串口  



          m_m。SetmPort(m_Port+1);  



          //  设置数据读取格式为二进制方式  



          m_m。SetInputMode(1);                



          //  设置传输参数  



          m_m。SetSettings(〃9600;n;8;1〃);  



          //缓冲区内有一个字符就可以接收  



          m_m。SetRThreshold(1);  



          //  指定接收缓冲区大小  



          m_m。SetInBufferSize(1024);  



          //指定发送缓冲区大小  



          m_m。SetOutBufferSize(1024);  



          //  清空接收缓冲区  



          m_m。SetInBufferCount(0);                       



          //  打开串口  



          if(!m_m。GetPortOpen())  



          {  



                m_m。SetPortOpen(TRUE);  



          }  



     }  



     当选择下拉列表中的端口时,会激发 CBN_SELCHANGE 消息,为其添加响应函数,代 

码如下:  



     void CMSmDlg::OnSelchangebolist()    



     {  



          // TODO: Add your control notification handler code here  



          CString m_str;  



          //得到下拉列表内容  



          GetDlgItemText(IDC_BOLIST; m_str);  



                                                                                                 ·325 ·  


…………………………………………………………Page 337……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



            //得到串口号  



            m_Port = atoi(LPCTSTR(m_str))…1;  



      }  



      为“打开串口”按钮添加响应函数,代码如下:  



      void CMSmDlg::OnOpenport()    



      {  



            // TODO: Add your control notification handler code here  



            Initm();  



      }  



      为“关闭串口”按钮添加响应函数,代码如下:  



      void CMSmDlg::OnClostport()    



      {  



            // TODO: Add your control notification handler code here  



            if( m_m。GetPortOpen() )  



            {  



                  //  关闭串口  



                  m_m。SetPortOpen(0);  



            }  



      }  



      为“发送”按钮添加响应函数,代码如下:  



      void CMSmDlg::OnSend()    



      {  



            // TODO: Add your control notification handler code here    



            //得到发送 Edit 控件的数据  



            UpdateData(TRUE);  



            int Count=m_Send。GetLength();  



            //将发送数据传给 m_Array  



            CByteArray m_Array;  



            m_Array。RemoveAll();  



            m_Array。SetSize(Count);  



              for(int i=0;i 0)  



              {  



                     //得到接收数据  



                     m_input = m_m。GetInput();  



                     str = (char*)(unsigned char*)m_input。parray…》pvData;  



              }  



              //清除字符串中的不必要字符  



              i = 0;  



              str1 = str;  



              while(i 《 k)  



              {  



                     i++;  



                     str1++;  



              }  



              *str1    =’0’;      



                str2 = (const char*)str;  



              //得到最终数据  



              m_Receive += (LPCTSTR)str2;  



       default:  



              break;  



       }  



       //  显示数据               



       UpdateData(FALSE);  



}  



至此,程序设计完成。运行两个程序,分别选择串口  1 和串口 2 ,然后收发数据,如图 



                                                                                           
返回目录 上一页 下一页 回到顶部 1 2
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!