Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2350499
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:00:29

串口事件, 串口在数据传输过程中产生的事件。
定义:
    __property void __fastcall (__closure *OnCommNotify) (TObject *Sender, int NotifyType) =
         { read = lpCommBusyProc, write = lpCommBusyProc };
参数:
    Sender: 产生事件的控件
    NotifyType: 是以下位或位的组合, 表示产生了相应的事件:
      EV_RXCHAR 收到数据
      EV_TXEMPTY 数据已经发送完毕
      EV_CTS 清除发送信号有变化 (CTS引脚电平有变化)
      EV_DSR 数据设备就绪状态有变化 (DSR引脚电平有变化)
      EV_RLSD 数据载波检测状态有变化 (DCD引脚电平有变化)
      EV_RING 有振铃信号
      EV_RXFLAG 收到可产生事件的字符, 可参考 API 函数 SetCommState
      EV_RX80FULL 接收缓存已经达到 80% 的容量, 如果是通过 Modem 等设备进行通讯, 要及时通知对方暂停发送
      EV_ERR 线路状态有错误, 包括 CE_FRAME, CE_OVERRUN 和 CE_RXPARITY.

以上事件均由默认的处理过程进行处理, 用户通常只需要处理 EV_RXCHAR 和 EV_TXEMPTY 事件。
也可以不用事件, 通过定期查询来访问串口的数据, 毕竟要收满缓存或者把缓存数据发完需要比较长(相对而言)的时间。
这个事件在另外一个线程里, 没在主线程里。在这个事件里要尽可能的缩短处理时间, 不要在此事件中停留太久。
如果要长时间处理数据,可以在这个事件里产生 Windows 消息或者触发你自己的串口读写线程里面的事件。

--------------------next---------------------

阅读(1335) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~