这几天在使用串口调试助手(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的多语言界面程序,通过定义多种语言的lng文件,即可轻松实现语言的切换
基于Formview的程序的多语言界面的实现,采用ini文件方式,支持用户定制语言
控制了窗口的大小当拖动窗口缩小的添加的空间大小时,窗口不会再缩小了,实现了formview dialog对话框的布局,还有就是点击菜单项切换界面,
论坛上有很多人使用对话框的scrollBar控制对话框中一部分的卷动,实现过程复杂而且逻辑混乱。这个例子里,直接在对话框中创建一个CFormView子窗口,子窗口自己管理卷动,各负其责,条理清晰
一个基于FormView的扩展类,允许控件以不同形式随窗体变化
FormView 视图 无法响应Ctrl+C等键盘消息解决办法 仅4行代码 无需对单个Editbox控件修改,非常好用 仅需2资源分
FormView控件的运用
这个是Windows FormView的程序,实现基本的FormView功能。
formview.css
木偶形式的演示样本 我为Marionette编写的FormView类的演示 安装 克隆存储库 转到项目文件夹 在终端中,启动命令: $ npm install $ grunt $ node server.js 在网络浏览器中,转到 就是这样
这是用vs建的一个例子,关于GridView控件和FormView控件的。
GridView_+_FormView_+_SqlDataSource
formview分页上一页下一页总页数当前页数首页末页
网站上自己下载的代码 运行了一遍 有一些收获 有兴趣的可以自己下载看看 免费下载的哦
这个是Windows FormView的程序,实现基本的FormView功能。
listbox,datasousce 应用以及
ASP.NET2.0中编程实现GridView与FormView的主-详细视图
GridView与FormView结合使用,实现增删改查,第一种方法,用数据源绑定完成!第二种方法,全部用代码完成!
详细的介绍了fromview的使用方法,加上本人实例