请高手指教:用VB控件Winsock的UDP协议,发送16进制数到单片机出现问题?

我总共需要发送12个(byte型)16进制数到单片机,然后用串口助手从单片机取回我发到单片机的数据。出现以下问题:1.结果和数据个数不对,我总共发送了12个16进制的数据... 我总共需要发送12个(byte型)16进制数到单片机,然后用串口助手从单片机取回我发到单片机的数据。出现以下问题:
1.结果和数据个数不对,我总共发送了12个16进制的数据,串口助手上却出现4个错误的数据。
  2.比如我向单片机发送16进制的3和4,sckClient.SendData 3
                  sckClient.SendData 4
结果串口助手上显示的是33 00 34 00 ,33是字符3的16进制ASCII码,34是字符4的16进制ASCII码,还会重复两次再现00???
下面是发送16进制数据的程序,如下:
Private Sub cmdSend_Click() '发送数据
Dim i, j As Integer
Dim fsData(11) As Byte
For i = 0 To 11
If txtData(i).Text = "" Then
MsgBox "请输入第" & i + 1 & "位数据!", vbInformation, "提示"
Exit Sub
Else
fsData(i) = "&H" & txtData(i).Text
End If
Next i
For j = 0 To 11
sckClient.SendData fsData(j) '这里发送了12个16进制的数据,结果串口助手上显示了4具错误的数据??
Next j
End Sub
展开
 我来答
尚心部落
2011-07-14 · TA获得超过302个赞
知道小有建树答主
回答量:534
采纳率:0%
帮助的人:557万
展开全部
我用mscomm控件也遇到了同样的问题,问题出现在发送的方式不对:
错误1.
sckClient.SendData 3
这么发是不对的,如果想发送数值型数据,必须把数值保存在byte数组中,以二进制方式发送,这里你想发送3和4,试一下这样行不行:
dim a(0 to 1) as byte
a(0)=3
a(1)=4
sckClient.SendData a

错误2:
fsData(i) = "&H" & txtData(i).Text
这样的话你的byte数组中可能会是文本,试试改成这样:
fsData(i) = clng("&H" & txtData(i).Text)

错误3:
For j = 0 To 11
sckClient.SendData fsData(j) '这里发送了12个16进制的数据,结果串口助手上显示了4具错误的数据??
Next j

不要用循环发送,直接发送数组:
sckClient.SendData fsData
更多追问追答
追问
谢谢你的回答我先验证下.
有个疑问:为什么发送数组的时候,只发数组名就可以了呢?
追答
好像只有byte数组才是这样的,也许是由数据类型决定的吧。我想问一下,你用winsock控件是如何与单片机进行通信的呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nimama7979
2011-07-14
知道答主
回答量:37
采纳率:0%
帮助的人:18.6万
展开全部
用microsoft comm control 控件 不会出错 编程超简单 控件在工程->部件里 祝你好运
追问
你这个是串口编程用的,我现在用的是通过PC网口与单片机通信。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
和光万物
2011-07-13 · TA获得超过501个赞
知道小有建树答主
回答量:386
采纳率:100%
帮助的人:144万
展开全部
等待高手的出现
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式