VC串口通信(3) - zw0558的专栏 - CSDN博客

VC串口通信(3) - zw0558的专栏 - CSDN博客

ID:38879632

大小:44.00 KB

页数:11页

时间:2019-06-20

VC串口通信(3) - zw0558的专栏 - CSDN博客_第1页
VC串口通信(3) - zw0558的专栏 - CSDN博客_第2页
VC串口通信(3) - zw0558的专栏 - CSDN博客_第3页
VC串口通信(3) - zw0558的专栏 - CSDN博客_第4页
VC串口通信(3) - zw0558的专栏 - CSDN博客_第5页
资源描述:

《VC串口通信(3) - zw0558的专栏 - CSDN博客》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、VC串口通信(3)-zw0558的专栏-CSDN博客.txt你妈生你的时候是不是把人给扔了把胎盘养大?别把虾米不当海鲜。别把虾米不当海鲜。VC串口通信(3)收藏工业控制领域(如DCS系统),经常涉及到串行通信问题。为了实现微机和单片机之间的数据交换,人们用各种不同方法实现串行通信,如DOS下采用汇编语言或C语言,但在Windows环境下却存在一些困难和不足。在Windows操作系统已经占据统治地位的情况下(何况有些系统根本不支持DOS如Windows2000)开发Windows环境下串行通信技术就显得日益重要。VC++6.0是微软公司于1998年推出的一种开发环境,以其强大的功能,友好的界

2、面,32位面向对象的程序设计及ActiveX的灵活性而受广大软件开发者的青睐,被广泛应用于各个领域。应用VC++开发串行通信目前通常有如下几种方法:一是利用WindowsAPI通信函数;二是利用VC的标准通信函数inp、inpw、inpd、outp、outpw、outpd等直接对串口进行操作;三是使用MicrosoftVisualC++的通信控件(MSComm);四是利用第三方编写的通信类。以上几种方法中第一种使用面较广,但由于比较复杂,专业化程度较高,使用较困难;第二种需要了解硬件电路结构原理;第三种方法看来较简单,只需要对串口进行简单配置,但是由于使用令人费解的VARIANT类,使用也

3、不是很容易;第四种方法是利用一种用于串行通信的CSerial类(这种类是由第三方提供),只要理解这种类的几个成员函数,就能方便的使用。笔者利用CSerial类很方便地实现了在固定式EBM气溶胶灭火系统分区启动器(单片机系统)与上位机的通信。以下将结合实例,给出实现串行通信的几种方法。1WindowsAPI通信函数方法  与通信有关的WindowsAPI函数共有26个,但主要有关的有:CreateFile()用“comn”(n为串口号)作为文件名就可以打开串口。ReadFile()读串口。WriteFile()写串口。CloseHandle()关闭串口句柄。  初始化时应注意CreateFi

4、le()函数中串口共享方式应设为0,串口为不可共享设备,其它与一般文件读写类似。以下给出API实现的源代码。1.1发送的例程//声明全局变量HANDLEm_hIDComDev;OVERLAPPEDm_OverlappedRead,m_OverlappedWrite;//初始化串口voidCSerialAPIView::OnInitialUpdate(){CView::OnInitialUpdate();CharszComParams[50];DCBdcb;Memset(&m_OverlappedRead,0,sizeof(OVERLAPPED));Memset(&m_OverlappedW

5、rite,0,sizeof(OVERLAPPED));m_hIDComDev=NULL;m_hIDComDev=CreateFile(“COM2”,GENERIC_READ│GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL│FILE_FLAG_OVERLAPPED,NULL);if(m_hIDComDev==NULL){AfxMessageBox(“Cannotopenserialport!”);gotoendd;}memset(&m_OverlappedRead,0,sizeof(OVERLAPPED));memset(&m

6、_OverlappedWrite,0,sizeof(OVERLAPPED));COMMTIMEOUTSCommTimeOuts;CommTimeOuts.ReadIntervalTimeout=0×FFFFFFFF;CommTimeOuts.ReadTotalTimeoutMultiplier=0;CommTimeOuts.ReadTotalTimeoutConstant=0;CommTimeOuts.WriteTotalTimeoutMultiplier=0;CommTimeOuts.WriteTotalTimeoutConstant=5000;SetCommTimeouts(m_hID

7、ComDev,&CommTimeOuts);Wsprintf(szComparams,“COM2:9600,n,8,1”);m_OverlappedRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);m_OverlappedWrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);dcb.DCBlength=sizeof(DCB);GetComm

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。