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问题,要不串口也连接不上,真心求教的说,而且这是我最近的一个项目,求大神帮忙了 展开
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问题,要不串口也连接不上,真心求教的说,而且这是我最近的一个项目,求大神帮忙了 展开
展开全部
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
'显示模块,用于显示从串口返回的数据
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,刚学没几天
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你发了串口调试助手,你自己慢慢看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
usb转com口线。
你的笔记本应该是usb口有数据才对。
你要在 设备管理器中 找到你的设备哦。看显示是不是com口。
cp210x 可以把usb未知设备转为com口
你的笔记本应该是usb口有数据才对。
你要在 设备管理器中 找到你的设备哦。看显示是不是com口。
cp210x 可以把usb未知设备转为com口
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在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) ‘这种写法是正确的
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语句测试一下
上面程序是不会有问题的,我已经用了无数次了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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要进行初始化设置,可以百度一下。
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的点击下完成的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询