Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205091
  • 博文数量: 96
  • 博客积分: 1781
  • 博客等级: 上尉
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-07 12:31
文章分类

全部博文(96)

文章存档

2014年(1)

2013年(14)

2012年(44)

2011年(37)

分类: LINUX

2012-09-14 14:18:29

   由于我的设备多是mips的嵌入式平台,而服务器一般是x86的CPU平台,在传输笔迹的时候,如果我只是放入结构体里,里面为整型,这是传到服务器端解析时发现数值完全不一样,这个是因为数据大小端的问题,当数值类型的长度大于一个字节时,在不同cpu体系之间传输时,就会解析异常,所以在试点时,我直接传输的是字符型数组,但总感觉这样傻乎乎的。

   现在在开发新签字板时,我发现一个问题,以前我一直认为坐标x,y是应该成对出现的,否则为无效,其实不然,驱动一般传输给我们的是变化的值,即如果只有x变化,则只会传输x值,这是其实一个新点,y应该使用之前的y。所以之前我发的点少了,导致写出的字有锯齿,所以在绘王这个板子上,我把所有的有效点都发出了,发现客户端绘图速度太慢,主要是点多了,我一个一个点的传时间太长,所以跟谢总讨论10个点一起发,这是定义16位为x的长度,这是就又遇到大端小端的问题。

   本来我想用TCP/IP里的网络字节序的函数来转换,但突然想到我可以将数值的高8位和数值的低八位分别放在第一个字节和第二个字节里,这样谢总那边就可以用第一个字节的值左偏移8位加上第二个字节来组合一个数值,这样就可以解决大端下端的问题。

   在测试中,我犯了个错误就是x=data[0]<<8+data[1]  这个异常特别难看出来,<<的优先级特别低,实际是左移动8+data[1]位,正确的写法时x=(data[0]<<8)+data[1]. 右移同样需要注意这个问题。

阅读(513) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~