[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]VB串口通信,遭遇SetCommState总返回False…………

上一篇:[备忘]Java中父类和子类的成员变量同名的情况..
下一篇:[转帖]在VB中利用API进行串口通信

添加日期:2011/9/8 2:01:29 快速返回   返回列表 阅读5598次
用VB调用API,控制串口通信。

读卡器要求波特率是38400,发现刚插上读卡器,我的程序不好使。

如果用AccessPort读写一次串口,我的程序就好使了。

通过监控,发现,刚上来就用我的程序,实际上设置了两次波特率,

第一次是38400,第二次是1200,而且数据位不是8,是奇怪的7…………

找来找去,原来是设置参数的SetCommState()方法返回False了。

那段代码如下:


    Dim dc As DCB
    If hComm = 0 Then Exit Function
      
    If GetCommState(hComm, dc) Then
        dc.BaudRate = lBaudRate
        dc.ByteSize = cByteSize
        dc.StopBits = cStopBits
        dc.Parity = cParity
        dc.EOFChar = cEOFChar
          
        SetCommParam = CBool(SetCommState(hComm, dc))
    End If


先取得参数,然后修改了几个,但是没有设置成功。

如果用AccessPort读写一次,波特率和停止位什么的就变为38400和1了。(我在accessPort里设置的)

再用我的程序就OK了。(先读参数,然后改)

很纳闷,为什么参数设置会失败~~~~

我的参数就直接传的数字,比如38400,8,1,0这样的。

然后看到参数类型是Byte,试着用Cbyte()函数转,也不行,

最后搜搜搜,用38400, 8, ONESTOPBIT, NOPARITY就好了。

还是内置的变量名好使哦,啊哈哈~~~~~
==========================================================
dcb.BaudRate=   nBaud; 
dcb.Parity=   nParity; 
dcb.ByteSize=   nDataBits; 
dcb.StopBits=   nStopBits; 
dcb.fBinary=   bBinary; 
dcb.fParity=   bParity; 
//其中 
Parity:     Value                             Meaning   
              EVENPARITY                         Even   
              MARKPARITY                         Mark   
              NOPARITY                             No   parity   
              ODDPARITY                           Odd   
              SPACEPARITY                       Space   

StopBits:   Value             Meaning   
            ONESTOPBIT           1   stop   bit                 
            ONE5STOPBITS       1.5   stop   bits   
            TWOSTOPBITS           2   stop   bits   

//以下是宏定义 
              #define   NOPARITY                         0 
              #define   ODDPARITY                       1 
              #define   EVENPARITY                     2 
              #define   MARKPARITY                     3 
              #define   SPACEPARITY                   4 

              #define   ONESTOPBIT                     0 
              #define   ONE5STOPBITS                 1 
              #define   TWOSTOPBITS                   2
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved