| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5951 人关注过本帖
标题:vb串口通信波特率的问题
只看楼主 加入收藏
dull2012
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-3
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
vb串口通信波特率的问题
vb串口通信波特率的问题,设备发送出来的波特率是12800.VB编写的串口程序,无法实现12800的波特率,请大侠指点一下,使用PCOMM的API编写。另:通过自定义设置串口波特率的调试助手已经确认波特率为12800,请问怎么实现?           无法实现通信。就是下位机发送的数据,上位机无法收到。上位机编写的软件通过串口调试助手发送,又可以收到。排除了其他可能性,就时上位机软件波特率无法设置到12800造成的。你自己设置个12800,系统不认识。还是无法通信。另外,硬件使用的USB转422,支持12800波特率。

[此贴子已经被作者于2016-3-11 09:35编辑过]

搜索更多相关主题的帖子: 波特率 可能性 通信 软件 
2016-03-10 16:42
dull2012
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-3
收藏
得分:0 
自己先顶一下
2016-03-10 16:42
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:10 
  baud = "12800,n,8,1"
   MSComm1.Settings = baud
   检查一下设备是否有校验位,数据位数,停止位数,双方必须一致才能成功。
   上面是12800波特率,没有校验位,8位数据位,1位停止位。


[此贴子已经被作者于2016-3-10 19:44编辑过]

2016-03-10 19:42
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:10 
“无法实现12800的波特率……”,怎么个无法实现?楼主没说。

本人QQ:775420425
2016-03-11 09:30
dull2012
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 3楼 wds1
你这个是MSComm,系统不支持12800,有没有像友善调试助手那样,自定义波特率设计
2016-03-11 09:31
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:0 
1、增加Combo1,Combo2控件
  Combo1:控件list定义COM1,COM2,...
  combo2:控件list定义9600,12800,...
2、设置Combo1_Click、Combo2_Click事件
  select case index
  case 0:baud="9600,n,8,1"
  case 1:baud="128600,n,8,1"
  ...
  end select
 '如果赋值语句改为baud=val(combo1.text) & ",n,8,1",支持combo1中输入波特率
3、以上可以实现列表选择或者自定义波特率



[此贴子已经被作者于2016-3-11 10:39编辑过]

2016-03-11 10:28
dull2012
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 6楼 wds1
你这个只是实现显示可设置波特率,具体通信不了。
2016-03-11 11:02
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:0 
  On Error GoTo ErrHandle
   If MSComm1.PortOpen = True Then MSComm1.PortOpen = False;如果端口打开,先关闭,否则发送出错
    = port
   MSComm1.Settings = baud
   MSComm1.Output = "ATE0" + Chr(13) + Chr(10)  '清回显
   MSComm1.Output = "AT+CMGF=0" + Chr(13) + Chr(10)'发短信初始化  ,你具体用什么功能,要查AT指令集
Handle:'错误判断,根据错误号可以知道发送失败原因
   Select Case Err.Number
     Case 8002: msgbox "连接错误,错误码:" + Str(Err.Number) + " 错误类型:无效端口"
     Case Else:msgbox "连接错误,错误码:" + Str(Err.Number) + " 错误类型:" + Err.Description
   End Select

Private Sub MSComm1_OnComm()'接收事件
 'comEvSend    1   在传输缓冲区中有比   Sthreshold   数少的字符。
 ' comEvReceive 2   收到   Rthreshold   个字符。该事件将持续产生直到用   Input   属性从接收缓冲区中删除数据。
 ' comEvCTS   3   Clear   To   Send   线的状态发生变化。
 ' comEvDSR   4   Data   Set   Ready   线的状态发生变化。该事件只在   DST      1   变到   0   时才发生。
 ' comEvCD   5   Carrier   Detect   线的状态发生变化。
 ' comEvRing   6   检测到振铃信号。一些   UART(通用异步接收—   传输)可能不支持该事件。
 ' comEvEOF   7   收到文件结束(ASCII   字符为   26)字符。
  Select Case '处理接收事件
   case comEvReceive
    If = comEvReceive Then
      MSComm1.InputLen = MSComm1.InBufferCount
  On Error GoTo ErrHandle1
      ReceiveData = MSComm1.Input
      ReceiveData = ReceiveData + MSComm1.Input
    endif
    j = InStr(ReceiveData, "+CMS")
    If j > 0 Then  ReceiveSuccess = 0
    i = InStr(ReceiveData, "+CMGR:")
    j = InStr(ReceiveData, "+CMGS")
    If j = 0 And i = 0 And Len(ReceiveData) > 8 Then '删除接收区中无用的数据
      ReceiveData = Mid(ReceiveData, Len(ReceiveData) - 7)
    End If
     If i > 0 Then
      j = InStr(ReceiveData, Chr(13) + Chr(10) + "OK")'处理接收的数据
    endif
   end select
ErrHandle1:
  msgbox Err.Number
 End Sub
     comm是通用接口,双方用不同的通信协议,具体的数据格式不一致,需根据数据报文具体处理,我写很早前自己做的利用手机串口收发短信的事件。


[此贴子已经被作者于2016-3-11 12:37编辑过]

2016-03-11 12:17
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:0 
你用的PCOMM,可以按如下方法设置
ret=sio_ioctl (DataCOM, B12800, P_NONE | BIT_8 | STOP_1 );
if(ret!=SIO_OK)
ShowMessage("数据串口\n打开失败!")


sio_ioctl不同版本,串口初始化函数可能不一样

2016-03-11 16:30
dull2012
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-3
收藏
得分:0 
还是没有解决,只能通过VC 重新编辑了
2016-03-15 11:35
快速回复:vb串口通信波特率的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032743 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved