当前位置:编程学习 > VB >>

上位机发送int型数据下位机接收不到?

上位机
Private Sub Command5_Click()
    Dim sj(0) As Byte
    Dim zj(1) As Byte

    sj(0) = &HF8       '标志  告诉下位机 后面要发送一个int数据
    MSComm1.Output = sj
    delay (200)


    zj(0) = Text1.Text / 256
    zj(1) = Text1.Text Mod 256
    MSComm1.Output = zj    
END Sub

下位机
if(SBUF==0xF8)             //xie ru   shuju
{
    RI=0; 
    while(!RI==1);       
    dat_H=SBUF;
RI=0; 
        while(!RI==1);
dat_L=SBUF; 
dat_XYT[0]=dat_H*256+dat_L;
}
这么写有问题吗? command --------------------编程问答-------------------- 你看一下你的 zj 中是什么内容。

其实,3 个字节可以一起发。串口是低速接口,下位机是来得及的。

Dim sj(2) As Byte

    sj(0) = &HF8       '标志  告诉下位机 后面要发送一个int数据
    sj(1) = Val(Text1.Text) / 256
    sj(2) = Val(Text1.Text) Mod 256
    MSComm1.Output = sj     --------------------编程问答--------------------
引用 1 楼 of123 的回复:
你看一下你的 zj 中是什么内容。

其实,3 个字节可以一起发。串口是低速接口,下位机是来得及的。

Dim sj(2) As Byte

    sj(0) = &HF8       '标志  告诉下位机 后面要发送一个int数据
    sj(1) = Val(Text1.Text) / 256
    sj(2) = Val(Text1.Text) Mod 256
    MSComm1.Output = sj    


首先不加延时一直出错  
另外当发送一个int数据时  数值在128-256之间是  数据会出错 根据实际反映 收到的数值基本都是320 --------------------编程问答-------------------- 收到的数值是400  不是320  记错了

另外这个算法      sj_byte(4) = Val(Text2.Text)-sj_byte(3)*256  为什么会溢出 sj_byte为byte 型    新人一个   --------------------编程问答--------------------
引用 1 楼 of123 的回复:
你看一下你的 zj 中是什么内容。

其实,3 个字节可以一起发。串口是低速接口,下位机是来得及的。

Dim sj(2) As Byte

    sj(0) = &HF8       '标志  告诉下位机 后面要发送一个int数据
    sj(1) = Val(Text1.Text) / 256
    sj(2) = Val(Text1.Text) Mod 256
    MSComm1.Output = sj    



   sj(1) = Val(Text1.Text) / 256
   当Text1.Text值大于128小于256时   sj(1)=1??????????? --------------------编程问答-------------------- 用这个试一试:http://download.csdn.net/detail/veron_04/4037248 --------------------编程问答-------------------- sj(1) = Val(Text1.Text) \ 256
补充:VB ,  控件
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,