whj19860123 发表于 2010-8-31 12:03:34

VB高手们帮我看下这端程序哪里出错了

Dim stringData As Integer
    Dim dispData As Double
    dispData = 9.9999
    Dim senddata(4) As Byte
    If dispData >= 0# And dispData < 10# Then
    stringData = Fix(dispData * 1000)
    Text3.Text = stringData
    senddata(0) = &HB
    senddata(1) = "&H" & Hex(stringData / 1000 + 128)    ‘
    senddata(2) = "&H" & Hex((stringData / 100) Mod 10)
    senddata(3) = "&H" & Hex((stringData / 10) Mod 10)
    senddata(4) = "&H" & Hex(stringData Mod 10)
    End If

结果senddata(1)=&H8Asenddata(2)=&H00 senddata(3)=&H00 senddata(4)=&H09
我想要的结果是:senddata(1)=&H89 senddata(2)=&H09 senddata(3)=&H09 senddata(4)=&H09
谁能够帮助我,在这里谢谢了

whj19860123 发表于 2010-8-31 12:21:29

它好像是4舍5入运算了。如何取消掉
哪位高手知道

whj19860123 发表于 2010-8-31 12:29:26

\这个写错了呵呵不好意思

ss_spark 发表于 2010-8-31 12:37:20

用 \ 就对了. "&H" & Hex() 这句是多余的.

adcr 发表于 2010-8-31 13:16:16

stringData As Integer
你"&H" & Hex(stringData / 1000 + 128)干什么?想把它变成HEX字符吗?

whj19860123 发表于 2010-8-31 13:37:11

是啊
我发现去掉"&H" & Hex() 也可以,不知道原因

adcr 发表于 2010-8-31 13:39:33

这段程序你想做什么,输入什么,输出是什么样

whj19860123 发表于 2010-8-31 13:40:15

还有 senddata(0)=&HB改成senddata(0) =hex(128)结果却不是0x80而是0x50???谁能解答下我的问题

whj19860123 发表于 2010-8-31 13:43:13

寄存器存储数据        0x00        0x01        0x02        0x03        0x04        0x05        0x06        0x07        0x08        0x09        0x0A        0x0B
对应值                0        1        2        3        4        5        6        7        8        9        -        +
寄存器存储数据        0x80        0x81        0x82        0x83        0x84        0x85        0x86        0x87        0x88        0x89               
对应值                0.        1.        2.        3.        4.        5.        6.        7.        8.        9.               
按上面表格,将一个数拆成5个字节。如:9.999就拆成0x0A 0x89 0x09 0x09 0x09

whj19860123 发表于 2010-8-31 13:45:39

三楼能否解答下,那个为什么多余,我实验出来"&H" & Hex() 确实多余,但是却不知道原因

whj19860123 发表于 2010-8-31 13:46:12

大侠吗。帮帮我

adcr 发表于 2010-8-31 13:46:30

9.999怎么拆成0x0A?

whj19860123 发表于 2010-8-31 13:51:57

0x0a表示符号

whj19860123 发表于 2010-8-31 13:52:33

0x0A 0x89 0x09 0x09 0x09        表示+ 9. 9 9 9

idodi 发表于 2010-8-31 13:58:26

别的不说,先说说这个;

还有 senddata(0)=&HB改成senddata(0) =hex(128)结果却不是0x80而是0x50???谁能解答下我的问题

hex()返回的是字符串,那么tempstr =hex(128) ="80", senddata为integer类型,
则senddata(0) =cint(hex(128)) =cint("80") =80 =0x50

我说的不一定对,还是建议搂住分步调试,看看每一部的返回值,相信搂住会有收获

whj19860123 发表于 2010-8-31 14:05:12

太感谢您了,学习了

whj19860123 发表于 2010-8-31 14:08:39

这个问题我想了24小时,太感谢了

adcr 发表于 2010-8-31 14:11:44

Private Sub Command1_Click()
Dim stringData As Integer
Dim dispData As Double

Dim senddata(4) As String

dispData = 9.9999
If dispData >= 0 And dispData < 10 Then
    senddata(0) = hx(Int(dispData + &H80))
   
    dispData = (dispData - Int(dispData)) * 10
    senddata(1) = Int(dispData)
   
    dispData = (dispData - Int(dispData)) * 10
    senddata(2) = hx(Int(dispData))
   
    dispData = (dispData - Int(dispData)) * 10
    senddata(3) = hx(Int(dispData))
   
    dispData = (dispData - Int(dispData)) * 10
    senddata(4) = hx(Int(dispData))
End If
End Sub

Function hx(h As Long) As String
hx = Hex(h)
If Len(hx) = 1 Then hx = "0" & hx
End Function

whj19860123 发表于 2010-8-31 21:09:12

VB6.0 用sleep函数需要声明吗,

whj19860123 发表于 2010-8-31 21:10:13

我直接用说我未定义,奇怪

adcr 发表于 2010-9-1 10:51:03

VB6.0 哪有sleep函数??

SkyGz 发表于 2010-9-1 12:50:02

要添加函数声明
页: [1]
查看完整版本: VB高手们帮我看下这端程序哪里出错了