上位机和单片机串口编程---API函数编程

上位机和单片机串口编程---API函数编程

ID:41412058

大小:56.39 KB

页数:4页

时间:2019-08-24

上位机和单片机串口编程---API函数编程_第1页
上位机和单片机串口编程---API函数编程_第2页
上位机和单片机串口编程---API函数编程_第3页
上位机和单片机串口编程---API函数编程_第4页
资源描述:

《上位机和单片机串口编程---API函数编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、不用MSComm控件,那看起来只能是使用WindowsAPIT,因为MFC貌似没有什么类封装了串口API函数的。用WindowsAPI编写串口程序本身是有巨大优点的,因为控制能力会更强,效率也会更高,而且对丁•那些纯绿色软件追求者来说,没有ActiveX控件比什么都重要——呵呵,我也是这么认为。API编写串口,过程一般是这样的:1、创建串口句柄,用CreateFile;2、对串口的参数进行设置,其屮比佼重要的是波特率(BaudRate),数据宽度(BytesBits),奇偶校验(Parity),停止位(StopBits),当然,重要的还有端口号(Port);3、然后对串丨I进行相应的

2、读写操作,这时候用到ReadFile和WriteFile函数;4、读写结束后,要关闭串口句柄,用CloseFile;下面依次大致讲讲个步骤的过程:第一步,从字面上去理解,人家也可以发现CreateFile实际上表明Windows是把串口当作一个文件来处理的,所以它也有文件那样的缓冲区、旬柄、读写错课等,不同的是,这个文件名字只有固定的儿个(一般为四个),而且始终存在(EXSITTNG),而且在调用CreateFile的时候请注意它的参数。CreateFile函数原型如下:HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,D

3、WORDdwShareMode,LPSECURITY.ATTRIBUTESIpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile);lpFileName是你需要创建的端口号,默认情况卜•是C0M1;dwDesiredAccess是表明你想讣你创建的串口以何种方式存在于你的应用程序中,因为串II通常是可读可写的,所以这里必须设置为GENERIC_READ

4、GENERIC_WRITE;dwShareMode是用来设置串口共享属性的,因为串口加于临界资源,当然

5、不能共享,所以这里也必须设置为0;IpSecurityAttributes是设登安全模式,一般采川默认的安全模式就可以了,选择NULL;dwCreationDisposition是设置是否打开新的“文件"(上面说过了,Windows是把串口等端口当作文件来处理的),因为串口属于硬件端口,当然不能随便重复创建,所以这里必须告诉Windows,每次创建的时候必须使用己经存在的串口,所以这里设置OPEN_EXSITING;dwFlagsAndAttributes,这个参数可以设宜的值比较多,大家若需要深入了解可以查找MSDN,这里因为我们接下去要做的是异步通讯,所以需要设置FILE_FLA

6、G_OVERLAPPED:最后一个参数hTemplateFile是指定模板文件,串口没有模板,选择NULL;所以最后我们设遗的CreateFile两数如F:m_hCom=CreateFile(m_sPort,GENERIC_READ

7、GENERIC_WR1TE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);在创建完巾口后,最后进行句柄测试:if(m_hCom==INVALID_HANDLE_VALUE){AfxMessageBox(u打开串丨I失败!”);return;}上面说到了并步,那什么是并步呢?界步是相对同步这个概念而言的。界

8、步,就是说,在进行串口读写操作时,不用等到I/O操作完成后函数才返回,也就是说,异步可以更快得响应用户操作;同步,相反,响应的I/O操作必须完成麻函数才返回,否则阻塞线程。对于一些很简单的通讯程序来说,可以选择同步,这样可以省去很多错谋检杳,但是对于复杂一点的应用程序,异步是最佳选择;第二步,设置串口,并创建串口线程。串口有很多的属性,上血也已经介绍了一些最重要的参数。这里不得不介绍一个重量级的数据结构DCB:typedefstruct_DCB{//debDWORDDCBlength;//DCB结构体大小DWORDBaudRate;〃波特率DWORDfBinary:1;〃是否是二进制

9、,一般设置为TRUEDWORDfParity:1;//是否进行奇偶校验,我做的是ARM嵌入式,所以FALSEDWORDfOutxCtsFlow:l;//CTS线上的硬件握手DWORDfOutxDsrFlow:l;//DSR线上的硕件握手DWORDfDtrControl:2;//DTR控制DWORDfDsrSensitivity:1;DWORDfTXContinueOnXoffrl;DWORDfOutX:1;〃是否使用XON/XOFF协议DWORDflnX:

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

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

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