编写基于FormView的SDI串口程序
来源:互联网 发布:手机移动网络转换电信 编辑:程序博客网 时间:2024/06/05 06:04
这几天在使用串口调试助手(SComAssistant - v2.2),会时不时的出现无法读出数据。
孰,兴起自己编写一个串口软件。
本程序使用MFC框架,所以在使用的使用的时候需要MFC的DLL的支持。
关于建立MFC程序使用应用程序向导即可完成。我们只说运用WIN API函数操作串口的流程。
1. 建立 Event -- 用 CreateEvent
invoke CreateEvent,NULL,TRUE,FALSE,NULL
用异步方式操作串口必须要定义 OVERLAPPED 结构,其中的 hEvent 必须自己建立,你要定义两个 OVERLAPPED 结构,一个用于读一个用于写,当然也必须建立两个 Event,把它们放入 OVERLAPPED.hEvent
2. 打开串口 -- 用 CreateFile
invoke CreateFile,addr szPortName,GENERIC_READ or GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL
注意用异步方式必须指定 FILE_FLAG_OVERLAPPED,而文件方式必须 OPEN_EXISTING,读写必须是 GENERIC_READ or GENERIC_WRITE
3. 设置串口参数 -- 用 SetCommState
invoke SetCommState,hCom,addr dcbx
hComm 是前面打开成功后返回的句柄,dcbx 是数据结构 DCB,里面包括了通讯的具体参数,至于这个参数的建立,你可以自己填写。
4. 建立读数据的线程
读的时候我们不知道数据什么时候会到,所以要建立一个线程专门用来读数据,在这个线程中,我们循环地用 ReadFile 读串口,同时用 WaitCommEvent 检测线路状态。
5. 读数据 -- 用 ReadFile
最后一个参数是开头定义的 OVERLAPPED 结构的地址,指定了它就表示是用异步方式的读方式,这个 API 会马上返回,接下去要用
invoke GetOverlappedResult,hCom,addr stReadState,addr dwBytesRead,FALSE 将其余的数据读完。
6. 结束时关闭端口
停止 WaitCommEvent 的等待以及关闭端口 CloseHandle
下载链接:点击打开链接
- 编写基于FormView的SDI串口程序
- mfc 基于formview的sdi 打开文档后 窗口变小的问题
- 基于API的MFC串口通信程序编写
- 在基于单文档(SDI)程序中应用MSCOMM串口通讯控件(转载)
- 在基于单文档(SDI)程序中应用MSCOMM串口通讯控件
- 在基于单文档(SDI)程序中应用MSCOMM串口通讯控件(附源程序)
- 基于MFC SDI的图像处理程序(带效果图)
- python编写的串口程序
- 串口通信程序的编写
- VC中基于文档(SDI/MDI)程序中能直接用串口MSComm通讯控件吗?
- 有关于串口通信程序的编写
- 有关于串口通信程序的编写
- 有关于串口通信程序的编写
- qt编写串口通信程序的介绍
- VS2010编写的MFC串口程序
- 基于MFC单文档SDI的OpenGL图形程序的基本框架
- C# 编写串口程序
- MDI程序与SDI程序的区别
- 用js对字符串编码的几种方法
- JTree學習_使用TreeModel構建樹
- 一位软件工程师的6年总结
- Eclipse配置Tomcat
- matlab批量保存图像至指定文件夹(revised) mkdir cd 等
- 编写基于FormView的SDI串口程序
- Matlab 保存多个图像 getframe、imwrite、sprintf、num2str、doc
- 源码安装LAMP环境
- Matlab从其他文件夹批量读取存储图片的心得体会
- js实现url的复制和jsp 获取地址栏的地址
- matlab中读取某个文件夹下所有数据文件
- 请问:金山卫士这个等待的效果怎么做出来的?
- GCGreatCode
- ASN.1语法