VB6使用API实现串口通信

在无法使用MScomm且不能转用VC的情况下,通过VB6调用API成功创建了一个单进程的异步非阻塞串口通信程序,实现了非常规波特率的通讯,性能稳定。
摘要由CSDN通过智能技术生成

    需要和客户的产品通讯,但波特率是非常规的,MScomm无法实现,原有的软件框架和条件又不能转用VC开发底层,于是用VB6调用API实现了这个通讯功能,虽然在VB6下这个程序还是单进程的,但实现了异步非阻塞的通信,性能相当稳定,下面是测试程序代码

 

Private   Sub cmdSend_Click()
    
'定义文件读写属性结构
    Dim sa As SECURITY_ATTRIBUTES
    
'定义串口状态结构
    Dim typCommStat As COMSTAT
    
'定义串口状态错误
    Dim lngError As Long
    
    
'********打开串口********
    Dim hCF As Long
    hCF 
= CreateFile("COM4", _
                        GENERIC_READ 
Or GENERIC_WRITE, 0, sa, _
                    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL 
Or FILE_FLAG_OVERLAPPED, 0)
    Debug.Print 
"打开串口:" & hCF
    
    
'********获取出错信息********
    Dim errNum As Long
    errNum 
= GetLastError()
    Debug.Print 
"出错信息:" & errNum
    
    
'定义标志值
    Dim flag As Long
            
    
'定义设备控制块
    Dim typDCB As DCB
    
    
'********获取设备控制块********
    flag = GetCommState(hCF, typDCB)
    Debug.Print 
"获取串口DCB:" & flag
    
    typDCB.BaudRate 
= 2500     '定义波特率
    typDCB.Parity = NOPARITY   '无校验位
    typDCB.ByteSize = 8        '数据位
    typDCB.StopBits = 0        '停止位 0/1/2 = 1/1.5/2
        
    
'********设置串口参数********
    flag = SetCommState(hCF, typDCB)
    Debug.Print 
"设置串口参数:" & flag
    
    
'********设置缓冲区大小********
    flag = SetupComm(hCF, 10241024)
    
'Debug.Print "设置缓冲区:" & flag
    
    
'********清空读写缓冲区********
    flag = PurgeComm(hCF, PURGE_RXABORT Or PURGE_RXCLEAR Or PURGE_TXABORT Or PURGE_TXCLEAR)
    
'Debug.Print "强制清空缓冲区:" & flag
    
    
'定义超时结构体
    Dim typCommTimeouts As COMMTIMEOUTS
    typCommTimeouts.ReadIntervalTimeout 
= 0     '相邻两字节读取最大时间间隔(为0表示不使用该超时间隔)
    typCommTimeouts.ReadTotalTimeoutMultiplier = 0      '一个读操作的时间常数
    typCommTimeouts.ReadTotalTimeoutConstant = 0        '读超时常数
    typCommTimeouts.WriteTotalTimeoutMultiplier =
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值