智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 9094|回复: 22
打印 上一主题 下一主题

在visualscope虚拟示波器上遇到了点问题

  [复制链接]

5

主题

19

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
44740
威望
37147
贡献
7523
兑换币
84
注册时间
2014-2-27
在线时间
35 小时
毕业学校
华中科技大学
跳转到指定楼层
1#
发表于 2014-3-16 14:18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 huster_tjs 于 2014-3-16 14:22 编辑

我现在用这个示波器遇到了一个困难,就是能够用串口接收数据,但是不显示波形;我看了很多人遇到了这个问题,都没有人能好好解答出来,希望在这里能够获得帮助!
我下面贴一下我的部分代码
这是串口输出代码:
        while(1)
        {
                buff2[0]=complement_filter((float) Read_Acc(),(float) Read_Gry());                                                                                                      //低字节数据                                      
                buff2[1]=0x00;                                            //高字节数据
                buff2[2]=Read_Acc();
                buff2[3]=0x00;
                buff2[4]=Read_Gry();
                buff2[5]=0x00;
                buff2[6]=0x00;
                buff2[7]=0x00;
                buff2[8] =CRC_CHECK(buff2, 8)&0x00ff;                             //将第9个数据赋上CRC的低字节
                buff2[9] =(CRC_CHECK(buff2, 8)&0xff00)>>8;                    //第10数据附上CRC的高字节


                for(i=0;i<10;i++)                                                            //连续输入十个数据
                {
                SBUF=buff2; //向串口送出数据这10个字节数据
                while(TI==0);  //确认发送完成
                TI=0;
                }
        delay(50);

这是校验码第九位和第十位代码:
unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)   //这个是协议,生成第九第十位校验码
{
    unsigned short CRC_Temp;
    unsigned char i,j;
    CRC_Temp = 0xffff;

    for (i=0;i<CRC_CNT; i++){      
        CRC_Temp ^= Buf;
        for (j=0;j<8;j++) {
            if (CRC_Temp & 0x01)
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
            else
                CRC_Temp = CRC_Temp >> 1;
        }
    }
    return(CRC_Temp);
}
不知道怎么就不显示波形,昨天搞了一天没有搞出来,都伤心死了。。




回复

使用道具 举报

24

主题

492

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13138
威望
5341
贡献
1645
兑换币
2222
注册时间
2012-3-9
在线时间
3076 小时
毕业学校
嘉兴学院
2#
发表于 2014-3-16 17:10:47 | 只看该作者
心情不错帮你一下


程序

float OutData[4] = { 0 };

unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{
    unsigned short CRC_Temp;
    unsigned char i,j;
    CRC_Temp = 0xffff;

    for (i=0;i<CRC_CNT; i++){      
        CRC_Temp ^= Buf[i];
        for (j=0;j<8;j++) {
            if (CRC_Temp & 0x01)
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
            else
                CRC_Temp = CRC_Temp >> 1;
        }
    }
    return(CRC_Temp);
}

void OutPut_Data(void)
{
  int temp[4] = {0};
  unsigned int temp1[4] = {0};
  unsigned char databuf[10] = {0};
  unsigned char i;
  unsigned short CRC16 = 0;
  for(i=0;i<4;i++)
   {
   
    temp[i]  = (int)OutData[i];
    temp1[i] = (unsigned int)temp[i];
   
   }
   
  for(i=0;i<4;i++)
  {
    databuf[i*2]   = (unsigned char)(temp1[i]%256);
    databuf[i*2+1] = (unsigned char)(temp1[i]/256);
  }
  
  CRC16 = CRC_CHECK(databuf,8);
  databuf[8] = CRC16%256;
  databuf[9] = CRC16/256;
  
  for(i=0;i<10;i++)
    uart_putchar(databuf[i]);
}


发送
      OutData[0] = g_fGravityAngle;
       OutData[1] = g_fGyroscopeAngleIntegral;
       OutData[2] = g_fGyroscopeAngleSpeed;
       OutData[3] = VOLTAGE_GRAVITY_Z;      
       OutPut_Data();


自己写个发送函数 uart_putchar(databuf[i]);
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
44740
威望
37147
贡献
7523
兑换币
84
注册时间
2014-2-27
在线时间
35 小时
毕业学校
华中科技大学
3#
 楼主| 发表于 2014-3-16 20:37:03 | 只看该作者
原来这东西这么难搞。。。他的数据是从屏幕最尾处开始的,而且输出的波形很小很小,基本看不见,
我将数据放大50倍之后才能看见波形。。。
不知道你们是不是这样的?
最蛋疼的是想要看到波形要不断的自己拖动屏幕

谢谢你的回答!
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
445
威望
245
贡献
118
兑换币
123
注册时间
2012-11-7
在线时间
41 小时
毕业学校
Whatever
4#
发表于 2014-3-19 21:19:02 | 只看该作者
机遇 发表于 2014-3-16 17:10
心情不错帮你一下

赞一个~
回复 支持 反对

使用道具 举报

30

主题

710

帖子

0

精华

常驻嘉宾

四驱兄弟!!!!

Rank: 8Rank: 8

积分
5063

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
2604
贡献
1529
兑换币
1626
注册时间
2012-8-27
在线时间
465 小时
5#
发表于 2014-3-19 21:43:56 | 只看该作者
楼主,现在你的示波器搞好了没?我也想用这软件,但是不懂用啊!真心求教。
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
44740
威望
37147
贡献
7523
兑换币
84
注册时间
2014-2-27
在线时间
35 小时
毕业学校
华中科技大学
6#
 楼主| 发表于 2014-3-20 13:01:05 | 只看该作者
搞好了
我qq515874417
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
44740
威望
37147
贡献
7523
兑换币
84
注册时间
2014-2-27
在线时间
35 小时
毕业学校
华中科技大学
7#
 楼主| 发表于 2014-3-20 13:02:14 | 只看该作者
zfenggo 发表于 2014-3-19 21:43
楼主,现在你的示波器搞好了没?我也想用这软件,但是不懂用啊!真心求教。

搞好了,可以加我qq515874417
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

注册会员

Rank: 2

积分
140
威望
106
贡献
34
兑换币
6
注册时间
2012-5-14
在线时间
0 小时
毕业学校
nwpu
8#
发表于 2014-6-18 19:22:26 | 只看该作者
huster_tjs 发表于 2014-3-16 20:37
原来这东西这么难搞。。。他的数据是从屏幕最尾处开始的,而且输出的波形很小很小,基本看不见,
我将数据 ...

楼主有两种解决办法,
1:设置屏幕上的点数
2:提高波特率,在短时间内发送更多的数据。

由于试用版波特率低,确保每次发送的时间间隔足够长。
要想提高波特率,可上item.taobao.com/item.htm?id=39601328620购买。
上面还能下载到最新试用版及帮助文件。
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

注册会员

Rank: 2

积分
140
威望
106
贡献
34
兑换币
6
注册时间
2012-5-14
在线时间
0 小时
毕业学校
nwpu
9#
发表于 2014-6-18 19:26:08 | 只看该作者
SBUF=buff2; //向串口送出数据这10个字节数据
应该改成
SBUF=buff2; //向串口送出数据这10个字节数据

由于试用版波特率低,确保每次发送的时间间隔足够长。
要想提高波特率,可上item.taobao.com/item.htm?id=39601328620购买。
上面还能下载到最新试用版及帮助文件。
还能获得更快更及时的帮助。
回复 支持 反对

使用道具 举报

2

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
威望
444
贡献
277
兑换币
300
注册时间
2014-9-3
在线时间
169 小时
10#
发表于 2014-10-18 20:41:28 | 只看该作者
为什么我这个虚拟示波器在我电脑上用不起来?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 14:25 , Processed in 0.148056 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表