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.处理接收回来的数据.

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

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

    串口介绍完了..

  • 相关阅读:
    NPOI导出excel表格应用
    通过用户密码获取共享文件
    sql之left join、right join、inner join的区别
    C#日志编写
    C#预编译指令
    匿名类型(C# 编程指南)
    反射
    SQL通用查询
    Lambda 表达式(C# 编程指南)
    自定义用户控件编写——(文件夹目录选择)
  • 原文地址:https://www.cnblogs.com/solokey/p/2126602.html
Copyright © 2011-2022 走看看