vb中的串口通信接收的数据总是为空

PublicbufAsIntegerPrivateSubCommand1_Click()MSComm1.Output=1&Chr(13)buf=Val(MSComm1.I... Public buf As Integer

Private Sub Command1_Click()

MSComm1.Output = 1 & Chr(13)

buf = Val(MSComm1.Input)

Text1.Text = buf

End Sub

单片机的程序是写入任何数据,返回16(我任意设定的),我用串口调试助手调试,可以确定单片机程序毫无问题,但是我一用vb,返回值就总为0(或者空),求高手求教,加QQ指导更好,谢谢了
我的是笔记本,没有串口,用的是USB TO RS 232线,应该不是USB问题,要不串口也连接不上,真心求教的说,而且这是我最近的一个项目,求大神帮忙了
展开
 我来答
zx001z7d53
2012-05-02 · TA获得超过2万个赞
知道大有可为答主
回答量:2.4万
采纳率:52%
帮助的人:5707万
展开全部
Private Static Sub show_s(Term As Control, data As String)
'显示模块,用于显示从串口返回的数据
Dim TermSize, i As Integer
TermSize = Len(Term.text)

' 过滤/处理退格符。
Do
i = InStr(data, Chr$(8))
If i Then
If i = 1 Then
Term.SelStart = TermSize - 1
Term.SelLength = 1
data = Mid$(data, i + 1)
Else
data = Left$(data, i - 2) & Mid$(data, i + 1)
End If
End If
Loop While i

' 除去换行符。
Do
i = InStr(data, Chr$(10))
If i Then
data = Left$(data, i - 1) & Mid$(data, i + 1)
End If
Loop While i

' 确定所有的回车都包含换行符。
i = 0
Do
i = InStr(i + 1, data, Chr$(13))
If i Then
data = Left$(data, i) & Chr$(10) & Mid$(data, i + 1)
End If

Loop While i

' 添加过滤的数据到 SelText 属性。
Term.SelText = data
' Label1.Caption = Data

End Sub
追问
这个怎么添加到原程序,需要在窗口添加点东西吗,我不懂VB,刚学没几天
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友115a18169
2012-05-12
知道答主
回答量:6
采纳率:0%
帮助的人:14.9万
展开全部
我给你发了串口调试助手,你自己慢慢看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aman048
2012-05-03 · TA获得超过235个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:172万
展开全部
usb转com口线。
你的笔记本应该是usb口有数据才对。

你要在 设备管理器中 找到你的设备哦。看显示是不是com口。

cp210x 可以把usb未知设备转为com口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天上曲_one
2012-05-02 · TA获得超过639个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:216万
展开全部
在MSComm1.Output = 1 & Chr(13)后面续写
MSComm1.InputLen = 1 '一次读出一个字节
MSComm1.RThreshold = 0 '不产生接收事件
Do while MSComm1.InBufferCount=0 '等待串口收到数据
DoEvents
loop
Dim Buf(0) As Byte ‘读到的是一个字节,要存放成字节类型
Buf = AscB(MSComm1.Input) ’收到的是字符类型,要转换成字节
Text1 = Buf(0) ‘这种写法是正确的
追问
加这个之后就提示实时错误8020,错误地方指向读串口的输出的那句命令
追答
这个错误是读端口失败,检查一下控件名称是否是MSComm1,端口号CommPort是否正确,看这个端口是否能打开
用msgbox mscomm1.portopen语句测试一下
上面程序是不会有问题的,我已经用了无数次了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2012-05-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3293万
展开全部
Public buf As Integer
Private Sub Command1_Click()
MSComm1.Output = 1 & Chr(13)
End Sub

Private Sub MSComm1_OnComm()
buf = Val(MSComm1.Input)
Text1.Text = buf

End Sub

另外mscomm1要进行初始化设置,可以百度一下。
追问
但是这么改的话,修改text的内容就不是在Command1的点击下完成的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式