VB中MSCOMM控件实现串行通信的问题

donghailan 2008-04-19 04:11:51
PC机与单片机串行通信。我遇到的问题:发数据少于8个,能正确接收,汉字少于4个,能正确接收;若发多了,只能收到8个数,汉字只能收4到个,而且接收区不能连续显示。用串口调试工具验证单片机中程序没错,我用的是VB企业版中的MSCOMM控件,程序代码如下:
Option Explicit
Private Sub Command1_Click()
'发送数据
Dim outdata As String

outdata = Text1.Text
MSComm1.Output = outdata
End Sub

Private Sub Command2_Click()
Unload Me '退出串口调试
End Sub

Private Sub Form_Load()
'初始化串口
With MSComm1
MSComm1.CommPort = 1 '选串口1
MSComm1.Settings = "4800,n,8,1" '设置波特率,数据位,停止位
MSComm1.PortOpen = True '串口打开
.InputMode = comInputModeText
.RThreshold = 1
End With
End Sub


Private Sub MSComm1_OnComm()

Dim indata As String

With MSComm1
Select Case MSComm1.CommEvent
Case comEvReceive '有接收事件发生,
indata = MSComm1.Input '
Text2.Text = indata '显示字符

End Select
End With
End Sub
command1发送按钮command2退出按钮text1发送区显示text2接受区显示
...全文
133 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
canghaike1988 2011-05-13
  • 打赏
  • 举报
回复
遇到相同问题了
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
接分先!
donghailan 2008-04-28
  • 打赏
  • 举报
回复
我的问题解决了,原来接收数据没问题,只是负责显示的文本框的问题,将Text2.Text = indata '显示字符 改为
text2.text=text2.text+indata+vbcrlf,就好了.
bigbat 2008-04-27
  • 打赏
  • 举报
回复
我也与到过但是,比你的要长些。你只要把MSComm1.Input的值每次都加起来。
buf=buf+MSComm1.Input

用户 昵称 2008-04-24
  • 打赏
  • 举报
回复
在form_load中加入

MSComm1.InputLen = 1 '当使用MSComm1.Input时,每次从接收缓冲区取一个字节。

试试
yestoyes 2008-04-23
  • 打赏
  • 举报
回复
是收发都如此,还是只有一方如此?

单片机和程序有没问题?主要是协议参数有没不妥的地方?

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧