| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:求教:字符串发送不完整
只看楼主 加入收藏
zxbvic
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
求教:字符串发送不完整
我的单片机做了个程序,开机发送"12345",然后呢就是单片机收到啥就回传啥
我先用串口助手试了一下,12345收到了,然后我又发送abcde,串口助手也收到了abcde,说明单片机程序没啥问题的。
我用VB做了个接收发送程序,运行后收到12345,说VB的接收程序应该没问题,但我发送abcde无数次,每次只收到个a,这是咱回事呢,查两天也没找到原因,我是自学玩的。写的不好别见笑
接收程序:
Private Sub MSComm1_OnComm()
If = comEvReceive Then
Text3(i).Text = Hex(AscB(MSComm1.Input))                       
i = i + 1
Print i               
Else  
End If
End Sub
发送:
Private Sub Command10_Click()
MSComm1.OutBufferCount = 0
MSComm1.Output = "abcde"          '遥控开机
End Sub
搜索更多相关主题的帖子: 单片机程序 字符串 
2013-06-26 11:23
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:7 
有可能是 字符串 格式的问题。

你发送时 ,用这个函数转一下看看。
MSComm1.Output = StrConv("abcde", vbFromUnicode) & vbNullChar

没用过串口通讯 ,所以不知道。


VB字符串,在内存里保存是 Unicode 形式,也就是每个字符占2个字节。
而 C 字符串,在内存里保存是 ASCII 形式,每个字母占1个字节,每个汉字占2字节。
单片机应该是使用标准的 C 写的,只支持 ASCII 字符串。

 Unicode 字符串是,如 abcde 保存在内存里,是
&H61 &H00 &H62 &H00 &H63 &H00 &H64 &H00 &H65 &H00
ASCII ,abcde保存在内存里,C格式是:
&H61 &H62 &H63 &H64 &H65 &H00

当C 读取  Unicode 时,读取第二个字节时,&H00 ,就认为 字符串结束了,后面的 8 个字节就不读了。


vbNullChar Chr(0) 值为 0 的字符   ,临时百度来的。

授人于鱼,不如授人于渔
早已停用QQ了
2013-06-26 11:34
zxbvic
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-26
收藏
得分:0 
还是一样啊谢谢了不行
2013-06-26 11:49
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:7 
debug.print lenb(MSComm1.Input), MSComm1.Input '调试下看看吧。
2013-06-26 12:59
mixfire
Rank: 2
等 级:论坛游民
帖 子:2
专家分:21
注 册:2013-6-27
收藏
得分:7 
MSComm的intputmode属性改一下试试,改为二进制方式
2013-06-27 15:37
快速回复:求教:字符串发送不完整
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046004 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved