開發環境: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