OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3927|回复: 8

Pen_Point.X0一直等于0,而Pen_Point.Y0正常。

[复制链接]

70

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2013-8-14
在线时间
103 小时
发表于 2015-2-20 14:54:13 | 显示全部楼层 |阅读模式
5金钱
过年好!!我使用的是MINI2.0的程序。
触摸屏已经校准完成。校准结果:
Pen_Point.xfac=0.066689,
Pen_Point.xoff=-16,
Pen_Point.yfac=0.086580,
Pen_Point.yoff=-11
这个结果绝对没有问题。但是:

void Convert_Pos(void)//转换坐标函数。
{
    if(Read_ADS2(&en_Point.X,&en_Point.Y))
    {
    en_Point.X0=Pen_Point.xfac * Pen_Point.X+Pen_Point.xoff;//这条语句计算出的Pen_Point.X0一直都等于0
    en_Point.X0=0.066689         * Pen_Point.X+Pen_Point.xoff;//如果改成这样计算出的Pen_Point.X0就完全正常

    en_Point.Y0=Pen_Point.yfac * Pen_Point.Y+Pen_Point.yoff;//计算Pen_Point.Y0完全正常
    }
}

我就奇了怪了,为什么计算出的Pen_Point.X0一直都等于0…………
谢谢朋友的解答!

最佳答案

查看完整内容[请看2#楼]

加packed关键字试试。
谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-20 14:54:14 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-2-21 10:08:32 | 显示全部楼层
我遇到过这样的情况:算式太长,编译会报错。

遇到这情况,各种猜想、各种试吧。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-21 12:14:47 | 显示全部楼层
你看看Pen_Point.xfac , en_Point.X和Pen_Point.xoff的值是否正常吧!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

70

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2013-8-14
在线时间
103 小时
 楼主| 发表于 2015-2-21 16:44:15 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
这几个参数完全正常。只是这个结构体不正常:
typedef struct 
{
u16 X0;//原始坐标
u16 Y0;
u16 X; //最终/暂存坐标
u16 Y;         
u8  Key_Sta;//笔的状态   
        //触摸屏校准参数
float xfac;
float yfac;
short xoff;
short yoff;
u8 touchtype;
}Pen_Holder;

给xfac赋值: Pen_Point.xfac=0.066689;
然后           printf("xfac=%f",Pen_Point.xfac);       结果printf出来的是nan
如果把结构体改成:
typedef struct 
{
u16 X0;//原始坐标
u16 Y0;
u16 X; //最终/暂存坐标
u16 Y;         
u8  Key_Sta;//笔的状态   
        //触摸屏校准参数
        float BugBugBug;//////////////////////////////加上这一句;
float xfac;
float yfac;
short xoff;
short yoff;
u8 touchtype;
}Pen_Holder;
printf("xfac=%f",Pen_Point.xfac); 
printf出来的就正常了。
这是什么情况呀?
谢谢!
回复

使用道具 举报

70

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2013-8-14
在线时间
103 小时
 楼主| 发表于 2015-2-26 21:55:47 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
请问,应该怎么加呢?确实没用过这个关键字呀……
谢谢!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-26 22:19:59 | 显示全部楼层
__packed typedef struct 
....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

70

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2013-8-14
在线时间
103 小时
 楼主| 发表于 2015-3-2 08:44:50 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
按照原子哥说的改了,但是提示一堆错误。提示没有这个关键字……
谢谢!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-3 23:19:53 | 显示全部楼层
回复【8楼】今天天气不好:
---------------------------------
试试:
#pragma pack (1)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-25 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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