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

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

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

    串口介绍完了..

  • 相关阅读:
    selenium又一小坑 无法用XPATH直接获取属性值 需要使用.get_attribute(“href”)
    seleium 之 EC 的用法
    用筛选法求100以内的素数(筛选法!!!)
    gets scanf getchar的用法
    P5728 【深基5.例5】旗鼓相当的对手
    访问那个地址上的变量 *
    素数表
    求素数
    求符合给定条件的整数集(c语言mooc 6.0 )
    C#理论学习
  • 原文地址:https://www.cnblogs.com/solokey/p/2126602.html
Copyright © 2011-2022 走看看