导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]vb发送整形量[荒原野草]

 *第13452篇: [求助]vb发送整形量

  
楼 主:荒原野草 2003年6月14日10:06
 [求助]vb发送整形量
上位机利用vb的mscomm控件向下位机发送带符号双字节整形量,以二进制形式发送,出现以下问题:如发送的数值在-128-128之间时,vb非常"聪明"的只发送了一个字节.这样下位机就无法正常接收.尝试用除法,取余等方式进行转换,由于牵扯符号问题,非常麻烦.在此特向给位请教应如何比较好的解决这个问题.谢谢!
  
2楼:guest 2003年6月14日10:12
 你用来存储要发送数据的变量类型不对,应用双字节的数据类型。
  
3楼:alvinyang 2003年6月14日13:51
 为了大家更有效的共同进步
为了大家更有效的共同进步, 还是请您说仔细点
  
4楼:荒原野草 2003年6月14日10:27
 可否讲详细一下,谢谢
我是将数据如下定义的
Dim sAB(72) As Integer  '要发送的数据
Dim Buffer As Variant

Buffer = Buffer & sAB(0)
Buffer = Buffer & sAB(1)
.........
MSComm.Output = Buffer


  
5楼:lhbmv 2003年6月16日18:59
 回复
可以定义一个byte数组,将整型数转化位双字节的16进制数存入这个byte数组
mscomm1.output=数组名就可以了
  
6楼:荒原野草 2003年6月17日14:46
 谢谢,问题已经解决
Dim AB as integer
MSComm.Output = DoubleInt(AB)

Function DoubleInt(IntNum As Integer)
Dim Buffer As Variant
Dim V(0 To 1) As Byte

If IntNum >  = 0 Then
  V(0) = (IntNum \ 256)
  V(1) = (IntNum Mod 256)
ElseIf IntNum   < 0 And IntNum >   -256 Then
  V(0) = (255)
  V(1) = (256 - (-IntNum Mod 256))
Else
  V(0) = (255 - (-IntNum \ 256))
  V(1) = (256 - (-IntNum Mod 256))
End If

Buffer = V
DoubleInt = Buffer

End Function


>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:想买一个能写FLASH的编程器,大家推荐推

[下一篇主题]:那位仁兄有SLE4442卡的资料,