zoukankan      html  css  js  c++  java
  • 9.串口操作之API篇 ReadFile WriteFile CloseHandle 及总结

    ReadFile: 读取串口接收缓冲区内的数据.
    WriteFile: 将数据写入串口发送缓冲区.
    CloseHandle: 关闭用CreateFile打开的串口句柄.Windows的内核对象,大多都是用这个函数来关闭句柄.

    1 function ReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD;   
    2 var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
    3 function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
    4 var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
    5 function CloseHandle(hObject: THandle): BOOL; stdcall;

    这2个函数貌似没太多的好说.CnRs232里写的很详细,有兴趣自己写串口组件的话,可以参考SPComm和CnRS232的源代码.

    下面大概描述一下另外一种操作方式,效率比重叠I/O要低.但是很适合应答式串口设备使用.如果是非应答式,还是用事件方式比较好.尤其是重叠I/O方式,效率较高,把轮询交给系统内核去做.

    1.发送命令.
    2.等待发送结束.
    3.轮询接收缓冲区,等待接收完整数据或者超时
    4.处理接收回来的数据.

    这样做可以明确知道接收的数据是由什么命令发送而返回的.

    用事件方式的话,需要在发送命令后,定义一个属性来记录最后一个命令是什么,当接收事件触发,并满足接收条件后,更新这个属性.超时也要做这样的操作.

    串口介绍完了..

  • 相关阅读:
    python INFO: Can't locate Tcl/Tk libs and/or headers
    关于 android 中 postDelayed方法的讲解
    python两个dataframe的合并
    Android异步加载访问网络图片-解析json
    ThinkCMF----调用指定栏目的文章列表
    thinkCMF----使用自定义函数
    thinkCMF----公共模板的引入
    thinkCMF----如何写标签
    thinkCMF----列表页跳转
    thinkCMF----导航高亮显示
  • 原文地址:https://www.cnblogs.com/solokey/p/2126602.html
Copyright © 2011-2022 走看看