没有合适的资源?快使用搜索试试~ 我知道了~
首页vc中mscomm串口通信详解
资源详情
资源评论
资源推荐
在 mfc 中进行串口通讯最简单的方法莫过于在对话框中使用 MSCOMM 控件了,MSComm
通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信
设备(如 Modem).
还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,
从而可以用它创建全双工S、事件驱动的、高效实用的通信程序。
一、用 MSComm 控件通信
1.串口通信基础知识
一般悦来,计算机都有一个或多个串行端口,它们依次为 com1、Com2、…,这些串口
还提供了外部设备与 pC 进行数据传输和
皿信的通道。这些串口在 CPU 和外设之间充当解释器的角色。当字符数据从 CPU 发送给
外设时,这些字符数据将被转换成串行比特
流数据;当接收数据时,比特流数据被转换为字符数据传递给 CPU,再进一步说,在操作
系统方面,Windows 用通信驱动程序
(COMM.DRV)调用 API 函数发送和接收数据,当用通信控件或声明调用 API 函数时,
它门由 COMM.DRV 解释并传递给设备驱动程序,
作为一个 vB 程序员,要编写通信程序.只需知道通信控件提供给 Windows 通信 AP1 函数
的接口即可.换句话说,只需设定和监视通
信控件的属性和事件即可。
2.使用 Mscomm 控件
在开始使用 MSComm 控件之前。需要先了解其属性、事件或错误
属性SSSSSSSSSSSS描述
CommPort设置或返回通信端口号
Settings以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位
PortOpen设置或返回通信端口的状态。也可以打开和关闭端口
Input返回和删除接收缓冲区中的字符
Output将字符串写入发送缓冲区
CommEvent 属性为通信事件或错误返回下列值之一。在该控件的对象库中也可以找到这
些常量。
常量SSSSSSSSSSS值SSSSSSSS描述
ComEventBreak1001收到了断开信号
ComEventCTSTO1002ClearToSendTimeout。在发送字符时,在系统指定的事 1 件
内,CTS(ClearToSend)线是低电平
ComEventDSRTO1003DataSetReadyTimeout。在发送字符时,在系统指定的事件
内,DSR(DataSetReady)线是低电平
ComEventFrame1004数据帧错误。硬件检测到一个数据帧错误
ComEventOverrun1006端口溢出。硬件中的字符尚未读,下一个字符又到达,并且丢
失
ComEventCDTO1007CarrierDetectTime。在发送字符时,在系统指定的事件内,
CD(CarrierDetect)线是低电平。CD
也称为 RLSD(ReceiveLineSingalDetect,接收线信号检测)
ComEventRxOver1008接收缓冲区溢出。在接收缓冲区中没有空间
ComEventRxParity1009奇偶校验错。硬件检测到奇偶校验错误 7
ComEventTxFull1010发送缓冲区满。在对发送字符排队时,发送缓冲区满
ComEventDCB1011检取端口 DCB(DeviceControlBlick)时发生了没有预料到的
错误
通信事件包含了下面的设置:
常量SSSSSSSSS值SSSSSSSS描述
ComEvSend1发送缓冲区中的字符数比 Sthreshold 值低
ComEvReceive2接收到了 Rthreshold 个字符。持续产生该事件,直到使用了 Input 属
性删除了接收缓冲区中的数据
ComEvCTS3CTS(ClearToSend)线改变
ComEvDSR4DSR(DataSetReady)线改变。当 DSR 从 1 到 0 改变时,该事件
发生
ComEvCD5CD(CarrierDetect)线改变 ComEvRing6 检测到响铃信号。一些
URAT(UniversalAsynchronousReciver-
-Transmitters,通用异步收发器)不支持该事件
ComEvEOF7收到了 EOF 字符(ASCII 字符 26)
Error 消息(MSComm 控件)下表列出了 MSComm 控件可捕获的错误消息:
常量SSSSSSSSSSSSSSSSSSSSSSS值SSSSSS描述
ComInvalidPropertyValue380无效的属性值
ComSetNotSupported383属性只读
ComGetNotSupported394属性只读
ComPortOpen8000端口打开时该存在无效
8001超时设置必须比 0 值大
ComPortInvalid8002无效的端口号
8003属性只在运行时有效
8004属性在运行时是只读的
ComPortAleadyOpen8005端口已经打开
8006设备标识符无效或不支持
8007不支持设备的波特率
8008指定的字节大小无效
8009缺省参数错误
8010硬件不可用(被其他设备锁住)
8011函数不能分配队列
ComNoOpen8012设备没有打开
8013设备已经打开
8014不能使用通信通知
ComSetCommStateFailed8015不能设置通信状态
8016不能设置通信事件屏蔽
ComPortNotOpen8018该存在只在端口打开是有效
8019设备忙
ComReadError8020通信设备读错误
ComDCBError8021检取端口设备控制块时出现内部错误
注意在使用的时候一定要保证两个通讯串口的设置是相同的,否则受到的信息将会产生错
误!
由于取值位数的不同,有可能发送的信息要读很多次才能组合成需要的信息!
1。建立 mfc 工程,都会撒。SS
将控件加进来:打开“Project->AddToProject->ComponentsandControls->Registered
ActivexControls”,然后选择控件:MicrosoftCommunicationControl,version6.0 插入到当
前的工程中。这样就将类SCMSComm的相关文件Smscomm.cpp和Smscomm.h一并加入
到了工程中。编程时只需将控件对话中的SMSComm控件拖至你的应用对话框中就 OK 了
2。定义串口对象:
CMSCommm_MSComm;
3。串口初始化:
DWORDstyle=WS_VISIBLE;
m_MSComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM);
if(m_MSComm.GetPortOpen())//如果串口是打开的,则行关闭串口
{
m_MSComm.SetPortOpen(FALSE);
}
m_MSComm.SetCommPort(1);//选择 COM1
m_MSComm.SetInBufferSize(1024);//接收缓冲区
m_MSComm.SetOutBufferSize(1024);//发送缓冲区
m_MSComm.SetInputLen(0);//设置当前接收区数据长度为 0,表示全部读取
m_MSComm.SetInputMode(1);//以二进制方式读写数据
m_MSComm.SetRThreshold(1);//接收缓冲区有 1 个及 1 个以上字符时,将引发接收数据
的 OnComm 事件
m_MSComm.SetSettings("9600,n,8,1");//波特率 9600 无检验位,8 个数据位,1 个停止位
if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
m_MSComm.SetPortOpen(TRUE);//打开串口
else
{
m_MSComm.SetOutBufferCount(0);
AfxMessageBox("OpenTheSerialPort1Failurre!");
}
4。串口数据读写:
MSComm类的读写函数比较简单:GetInput()和 SetOutput()。函数原形分别为
VARIANTGetInput()和 voidSetOutput(constVARIANTnewValue),均使用 VARIANT
类型。但 PC 机发送和接收数据时习惯用字符串形式。MSDN 中查阅 VARIANT 类型,可
以用 BSTR 表示字符串,但所有的 BSTR 都包含宽字符,而只有 WindowsNT 支持宽字符,
Windows9X 并不支持。所以要完成一个适应各平台的串口应用程序必须解决这个问题。
这里使用 CbyteArray 即可解决之。
发数据:在对话框对加入S按钮S控件并给你添加消息
voidCTest_mscommDlg::OnSend()
{
剩余12页未读,继续阅读
wangjian8855
- 粉丝: 7
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1