VB串口通信问题

求教:我用单片机模拟一个字符串数据发送到串口,由VB上位机接受,这里是我的上位机串口设置:MSComm2.Settings="2400,n,8,1"MSComm2.Com... 求教:我用单片机模拟一个字符串数据发送到串口,由VB上位机接受,这里是我的上位机串口设置:
MSComm2.Settings = "2400,n,8,1"
MSComm2.CommPort = 3
MSComm2.InputMode = comInputModeBinary '采用二进制传输
MSComm2.InBufferCount = 0 '清空接受缓冲区
MSComm2.OutBufferCount = 0 '清空传输缓冲区
MSComm2.RThreshold = 0 '产生MSComm事件
MSComm2.InputLen = 0
MSComm2.InBufferSize = 1024
MSComm2.PortOpen = True

Private Sub Timer4_Timer()
Dim strTemp1 As String
Timer4.Enabled = False '关闭定时器

If MSComm2.InBufferCount > 0 Then 'InBufferCount=0为清除当前已收到的数据
ReceivedLen = MSComm2.InBufferCount 'InBufferCount接收缓冲区
inx = MSComm2.Input
For i = 0 To UBound(inx)
strTemp1 = strTemp1 & Chr$(inx(i))
Next i

End If

Timer4.Enabled = True '打开定时器

Select Case strTemp1
Case "3EF5C9B"
If numone.Caption = "" Then '判断汽车驶入记录还是驶出收费
Frame21.Caption = "ID:" & strTemp1
Dim T1 As Date
T1 = Now
numone.Caption = Format(T1, "yyyy-mm-dd HH:MM:SS")
onetime = numone.Caption '记录驶入时间
cl = cl + 1 'cl为当前车辆数
Form2.label0.Caption = cl

为什么不能VB上位机不能接收到这个字符串数据呢? 我用字符触发式的方法可以接受单一字符,但是我用定时器轮循法就接受不了字符串,我用串口助手是有接受到这个字符串的。
展开
 我来答
是小白啊2k
2013-03-29 · TA获得超过2566个赞
知道小有建树答主
回答量:1183
采纳率:0%
帮助的人:1163万
展开全部
应该用接收数据那个事件来接收,如果数据到达,而没有接收则数据会丢失。所以不能用timer
更多追问追答
追问
我这个是用轮循法,定时器定时接受数据,一个一个组合成字符串,数据应该没有丢失吧?如果是接受数据那个时间,是指直接轮循法吗,我不知道要怎么修改,能帮我修改一下吗
追答
用on_common事件
Private rectext As String
Private Sub MSComm1_OnComm()
Dim Inbyte() As Byte
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
Inbyte = MSComm1.Input
Label1.Caption = UBound(Inbyte)
For i = LBound(Inbyte) To UBound(Inbyte) 'i循环从数组Inbyte的下届到上届
rectext = rectext & Hex(Inbyte(i)) & Chr(32)
Next i
End Select
Text2.Text = rectext
End Sub
匿名用户
2013-03-29
展开全部
MSComm2.RThreshold = 0 '产生MSComm事件

改为 1 试试
追问
不行啊,我使用轮循法取值的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独孤求上清
2013-03-29 · 超过24用户采纳过TA的回答
知道答主
回答量:150
采纳率:0%
帮助的人:75.8万
展开全部
你的单片机工作频率是多少?
更多追问追答
追问
12M晶振
追答
如果你用的51单片机,在单片机端通信设置为:
TMOD = 0x20;
TH1 = 243; // 0xf3; //0xe6;
TL1 = 243; // 0xf3;//2400波特率/ //0xe6;//1200波特率
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;

//243就是0xf3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式