作者vtr198172 (43米的深海)
看板LinuxDev
标题[问题] touch panel的问题
时间Mon Dec 14 17:44:01 2009
开发环境:arm-linux 使用语言:C
我手边有一个touch panel 我查看他的driver 上面有一段注解如下:
* bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
* byte0 sync tch 0 0 0 0 0 rclk
* byte1 0 X6 X5 X4 X3 X2 X1 X0
* byte2 0 X13 X12 X11 X10 X9 X8 X78(很怪)
* byte3 0 Y6 Y5 Y4 Y3 Y2 Y1 Y0
* byte4 0 Y13 Y12 Y11 Y10 Y9 Y8 Y7
我写了一只程式想要撷取出他的x和y座标:
大致如下:
char buffer[255];
count=read(fd, buffer, 255);
printf("read some data:%x %x %x %x %x %x %x\n",buffer[0],
buffer[1],
buffer[2],
buffer[3],
buffer[4],
buffer[5],
buffer[6]);
unsigned int x_coord;
memset(&x_coord, 0, sizeof(int));
memcpy(&x_coord, buffer+1, 2); <=== 2 bytes的值丢入4 bytes的变数
printf("x_coord:%d\n", x_coord); 是否会有问题呢?需要右移2位吗?
列印出来的一部分结果是:
read some data:64 10 c9 34 38 64 10
x_coord:51472 <=== 超过16384了 >"<
read some data:10 c9 34 38 64 10 c9
x_coord:13513
read some data:38 64 10 c9 34 38 64
x_coord:4196
请问我的程式是否有问题呢?因为照理说他应该是把画面切成16384*16384格才对,
可是会有超过的现象?
不好意思,打得有点乱,问题主要是不太理解最上面他给的table表?
以及要如何正磪显示X和Y座标?
而且他的table表为什麽要从右排到右呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.22.20.210