- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WindowsAPI串口通信程序
实 验 报 告
课程名称: 信息管理综合实验
实验名称:WindowsAPI串口通信程序
院 (系):
专业班级:
姓 名:
学 号:
指导教师:
一、实验目的
1. 掌握串口通信程序设计流程;
2. 理解WindowsAPI串口参数设置的作用;
3. 掌握基于WindowsAPI的串口程序的VC基本框架;
4. 掌握通过线程处理读、写事件的方法;
5. 熟悉WindowsAPI串口处理函数的功能与参数设置。
二、实验软硬件环境
1. 微机(两台间互连、一台的一个串口同时收发);
2. USB-COM转换器;
3. 串口连接数据线、收/发数据线短接线;
4. WindowsXP/Win7 + VC++6.0/VC++2010。
三、实验内容Usb-com驱动的安装
选择符合要求的驱动进行安装,如果驱动不符合要求,可能之间不能进行通信,在驱动的基础上,通过2接3,3接2,从而基本的通信。
程序框架的建立过程
新建一个工程,串口工程,如图所示:
建立工程过程中,选择单文档类型
向工程中添加控件
MSCOMM控件属性的设置参数
设置串口类参数
1)设置读取串口数据时,从串口缓冲区中读取的字节数
void CMSComm::SetInputLen(short nNewValue)
{
static BYTE parms[] =
VTS_I2;
InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
设置串口的相关参数,顺序为波特率,奇偶校验,数据位数,停止位
CString CMSComm::GetSettings()
{
CString result;
InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_BSTR, (void*)result, NULL);
return result;
}
2)设置将打开的串口号码
void CMSComm::SetPortOpen(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x14, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
获取用户指定的串口号是否打开,返回真表示已经打开
BOOL CMSComm::GetPortOpen()
{
BOOL result;
InvokeHelper(0x14, DISPATCH_PROPERTYGET, VT_BOOL, (void*)result, NULL);
return result;
}
4)设置通过串口的接收数据的类型,0表示文本类型,1表示二进制类型。
void CMSComm::SetInputMode(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x1d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
打开串口
void CMSComm::SetPortOpen(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x14, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
发送串口数据
void CMyView::OnSenddata()
{
CString str,str1;
char* a;
GetDlgItem(IDC_EDIT2)-GetWindowText(str);
if(str.GetLength()!=0)
{
for(int i=0;istr.GetLength();i++)
{
a=str.GetBuffer(i);
mm.SetOutput(COleVariant(a)); //调用串口数据发送函数发送数据
memset(a,0,1);
}
}
else
{
MessageBox(输入数据不能为空!);
}
str1.
文档评论(0)