用API实现串口异步读写 点击:2059 | 回复:2



叶帆

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 88回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2003年9月03日
发表于:2006-08-18 10:05:00
楼主
VB的MSCOMM控件虽然很好用,但是在没有装VB的机器上用该控件总觉得有些累赘,网上的VB API代码大部分都基于同步方式,处理复杂的通信模式不是太理想,所以用了一些时间,把VC项目中的异步串口读写代码翻译为VB格式。
*************************************************************************
'**函 数 名:OpenPort
'**输    入:ComNumber(Long)     - 串口号
'**        :Comsettings(String) - 配置信息
'**输    出:(Long) - 0 成功 非 0 失败
'**功能描述:打开串口
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2006-08-17 14:40:14
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Public Function OpenPort(ComNumber As Long, Comsettings As String, Optional lngInSize As Long = 1024, Optional lngOutSize As Long = 512) As Long
    On Error GoTo handelinitcom
    Dim retval As Long
    Dim CtimeOut As COMMTIMEOUTS, dcbs As DCB
    Dim strCOM As String, strConfig As String

    strCOM = "\.COM" & Format(ComNumber, "0")
    m_Handle = CreateFile(strCOM, GENERIC_READ Or GENERIC_WRITE, 0, 0&, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL Or FILE_FLAG_OVERLAPPED, 0)
    If m_Handle = -1 Then
        OpenPort = -1
        Exit Function
    End If

    '设置dcb块
    dcbs.DCBlength = Len(dcbs)                           '长度
    Call GetCommState(m_Handle, dcbs)

    '波特率,奇偶校验,数据位,停止位  如:9600,n,8,1
    strConfig = "COM" & Format(ComNumber, "0") & ":" & Comsettings
    Call BuildCommDCB(strConfig, dcbs)

    '------------------------------
    '    dcbs.fBinary = 1                          '二进制方式
    '    dcbs.fOutxCtsFlow = 0                     '不用CTS检测发送流控制
    '    dcbs.fOutxDsrFlow = 0                     '不用DSR检测发送流控制
    '    dcbs.fDtrControl = DTR_CONTROL_DISABLE    '禁止DTR流量控制
    '    dcbs.fDsrSensitivity = 0                  '对DTR信号线不敏感
    '    dcbs.fTXContinueOnXoff = 1           &nb



general_hou

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2003年5月26日
发表于:2006-08-25 10:18:00
1楼
牛人,有时间小弟向您好好请教哦.

Veron_04

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 34回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2009年4月18日
发表于:2009-05-22 22:01:39
2楼
这个我看过,确实是牛人!

热门招聘
相关主题

官方公众号

智造工程师