当前位置:松语文学 > 其他类型 >VC++_6.0程序设计从入门到精通最新章节 > VC++_6.0程序设计从入门到精通TXT下载
错误举报

第 65 章

  )InBufferCount 属xìng

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

  枫叶文学网www.fywxw.com

  第11 章 网络编程

  ·323·

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

  (7)InBufferSize 属xìng

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

  SetInBufferSize(short nNewValue)和short GetInBufferSize()。

  (8)Output 属xìng

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

  newValue)。

  (9)OutBufferCount 属xìng

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

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

  (10)OutBufferSize 属xìng

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

  SetOutBufferSize(short nNewValue)和short GetOutBufferSize()。

  (11)CommEvent 属xìng

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

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

  表11-13 常见串口事件

  常数 取值 描述

  ComEvSend 1 发送事件

  ComEvReceive 2 接收事件

  ComEvCTS 3 clear-to-send 线的状态发生变化

  ComEvDSR 4 data-set ready 线的状态发生变化

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

  ComEvRing 6 检测到震铃信号

  ComEvEOF 7 收到文件结束字符

  (12)RThreshold 属xìng

  该属xìng用于设置或返回RThreshold 数值,所谓RThreshold 数值是通过MSComm 控件将

  CommEvent 属xìng设置为ComEvReceive,并在产生OnComm 事件之前所接收的字符数。

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

  11.5.2 利用MSComm 控件编程的基本流程

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

  ? 在当前Project 中chā入MSComm 控件;

  ? 初始化并打开串口;

  ? 捕捉串口事项;

  ? 串口读写;

  ? 关闭串口。

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·324·

  11.5.3 利用MSComm 进行串口通信

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

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

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

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

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

  6.0”控件,将其添加到工程中,如图11-17 所示。

  图11-16 添加控件对话框 图11-17 加入MSComm 控件

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

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

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

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

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

  图11-18 对话框界面

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

  的变量如表11-14 所示。

  枫叶文学网www.fywxw.com

  第11 章 网络编程

  ·325·

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

  控件 ID 变量

  MSComm 控件 IDC_MSCOMM CMSComm m_Comm

  接收数据Edit IDC_RECEIVEDATA CString m_Receive

  发送数据Edit IDC_SENDDATA CString m_Send

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

  打开串口按钮 IDC_OPENPORT 无

  关闭串口按钮 IDC_CLOSTPORT 无

  发送按钮 IDC_SEND 无

  在文件“MSCommDlg.h”的头部加入语句#include "mscomm1.h",然后为对话框类加入

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

  void CMSCommDlg::InitComm()

  {

  //设置串口

  m_Comm.SetCommPort(m_Port+1);

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

  m_Comm.SetInputMode(1);

  // 设置传输参数

  m_Comm.SetSettings("9600,n,8,1");

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

  m_Comm.SetRThreshold(1);

  // 指定接收缓冲区大小

  m_Comm.SetInBufferSize(1024);

  //指定发送缓冲区大小

  m_Comm.SetOutBufferSize(1024);

  // 清空接收缓冲区

  m_Comm.SetInBufferCount(0);

  // 打开串口

  if(!m_Comm.GetPortOpen())

  {

  m_Comm.SetPortOpen(TRUE);

  }

  }

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

  码如下:

  void CMSCommDlg::OnSelchangeCombolist()

  {

  // TODO: Add your control notification handler code here

  CString m_str;

  //得到下拉列表内容

  GetDlgItemText(IDC_COMBOLIST, m_str);

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·326·

  //得到串口号

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

  }

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

  void CMSCommDlg::OnOpenport()

  {

  // TODO: Add your control notification handler code here

  InitComm();

  }

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

  void CMSCommDlg::OnClostport()

  {

  // TODO: Add your control notification handler code here

  if( m_Comm.GetPortOpen() )

  {

  // 关闭串口

  m_Comm.SetPortOpen(0);

  }

  }

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

  void CMSCommDlg::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<Count;i++)

  m_Array.SetAt(i,m_Send[i]);

  //发送

  m_Comm.SetOutput(COleVariant(m_Array));

  m_Send = "";

  UpdateData(FALSE);

  }

  对于数据的接收,应该利用MSComm 控件的OnComm 事件来处理。为其添加响应函数,

  代码如下:

  void CMSCommDlg::OnOnCommMscomm()

  枫叶文学网www.fywxw.com

  第11 章 网络编程

  ·327·

  {

  // TODO: Add your control notification handler code here

  int nEvent;

  VARIANT m_input;

  char *str, *str1;

  int k,i;

  CString str2;

  //得到事件

  nEvent = m_Comm.GetCommEvent();

  switch(nEvent)

  {

  //只对接收数据事件进行处理

  case 2:

  // 接收缓冲区的字符数目

  k = m_Comm.GetInBufferCount();

  if(k > 0)

  {

  //得到接收数据

  m_input = m_Comm.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,然后收发数据,如图

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·328·

  11-19 和图11-20 所示。

  图11-19 串口发送数据 图11-20 串口接收数据

  11.6 本章小结

  本章介绍了网络编程的基本知识及基本步骤,并且详细介绍了WinSock 类。接着利用所

  讲知识编程实现了一个网络聊天系统,最后利用MSComm 控件实现了简单的串口通信。相

  信通过本章的学习,读者可以编写简单的网络应用程序,并会利用MSComm 控件进行简单

  的串口数据传输。

  枫叶文学网www.fywxw.com

  第12 章 数据库开发

  随着计算机技术的飞速发展,数据库的应用也越来越广泛。如今,数据库技术已经成为

  计算机技术中的核心技术之一。本章首先简单介绍数据库的基本概念及用Visual C++ 6.0 进

  行数据库开发的几种相关技术,然后介绍Access 数据库的建立和一些基本的SQL 语句,最

  后通过一个具体的实例来详细说明ADO 技术在数据库开发中的应用。本章主要包括以下几

  方面的内容:

  ? 数据库的基本概念及数据库的相关技术;

  ? Access 数据库的建立;

  ? 基本的SQL 语句;

  ? 如何利用ADO 技术进行数据库开发。

  12.1 概述

  数据库技术产生于20 世纪60 年代中期,是数据管理的最新技术,是计算机科学的重要

  分支,它的出现极大的促进了计算机应用向各行业的渗透。本节将对数据库的概念,数据库

  的相关技术以及如何开发数据库应用程序作一简单介绍。

  12.1.1 数据库的基本概念

  所谓数据库(Database,简称DB),就是长期存储在计算机内的、有组织的、可共享的

  数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度,较高

  的数据独立xìng和易扩展xìng,并可为各种用户共享。

  有了数据和数据库,还要进行数据库的管理,不仅可以科学地组织这些数据并将其存储

  在数据库中,而且还能高效地处理这些数据。数据库管理系统(Database Managcomnt System,

  简称DBMS)是位于用户和cāo作系统之间的一层数据管理软件。数据库在建立、运用和维护

  时由数据库管理系统统一管理、统一控制。数据库管理系统使用户能方便的定义数据和cāo纵

  数据,并能够保证数据的安全xìng、完整xìng、多用户对数据并发使用以及发生故障后的系统恢

  复。

  在很多情况下,人们所说的数据库实际上指的是数据库系统。数据库系统(Database

  System,简称DBS)是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库

  管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。

  设计数据库的核心

  松语文学免费小说阅读_www.16sy.com