关于VB6.0串口通讯的问题

我用单片机连接PC进行232通讯,目前的状态是我的单片机能够正常发送数据,我用串口调试工具测试正常。但是我用VB6.0写了一个串口接收程序,无论如何也接收不到数据,请高手... 我用单片机连接PC进行232通讯,目前的状态是 我的单片机能够正常发送数据,我用串口调试工具测试正常。但是我用VB6.0写了一个串口接收程序,无论如何也接收不到数据,请高手帮我看下是哪里出了问题? 展开
 我来答
匿名用户
2014-12-12
展开全部
串口控件的参数设置应该有问题,建议采用串口控件事件触发的方式,接收数据。下面的代码是我以前写的多串口通讯的串口初始化函数,你参考一下吧,有问题追问。
Public Sub psubInitComPort(intMsCommIndex As Integer, intComNo As Integer, strSettings As String, intInBuffSize As Integer, intRThreshold As Integer, blnPortOpen As Boolean)
On Error GoTo err_proc

If blnPortOpen Then '--打开串口
MSComm(intMsCommIndex).CommPort = intComNo '--使用端口Com1~8
MSComm(intMsCommIndex).Settings = strSettings '"1200,N,8,1" '--设置端口属性,设置波特率1200、无奇偶校验、8数据位和1停止位
MSComm(intMsCommIndex).InBufferSize = intInBuffSize '1024 '--设置接收缓冲区大小为1024个字节
MSComm(intMsCommIndex).RThreshold = intRThreshold ' 12 '--设置每接收n个字节触发OnComm()事件

MSComm(intMsCommIndex).InBufferCount = 0 '--清空接收缓冲区
MSComm(intMsCommIndex).InputLen = 0 '--使用Input属性时在接收缓冲区读取的字符数,0为读取整个接收缓冲区内容
MSComm(intMsCommIndex).InputMode = comInputModeBinary '--Input属性取的数据是二进制数据

If Not MSComm(intMsCommIndex).PortOpen Then '--打开串口
MSComm(intMsCommIndex).PortOpen = True
End If
Else
If MSComm(intMsCommIndex).PortOpen Then '--关闭串口
MSComm(intMsCommIndex).PortOpen = False
End If
End If

Exit Sub
err_proc:
End Sub
追问
谢谢回答。我刚开始学VB,您的程序我稍后再详细理解一下。不过我目前还是想知道我自己写的那个简单程序段不能接收数据的错误原因在哪里?烦请帮我检查解决一下可以吗?
追答
MSComm1.PortOpen = True

InputMode你看看是怎么设置的
匿名用户
推荐于2016-09-15
展开全部
RThreshold 属性:在MSComm控件设置CommEvent属性为comEReceive并产生 OnComm 之前,设置并返回的要接收的字符数。
语法:
object.Rthreshold [ = value ](value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。 )

说明 :当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式