看板 LinuxDev 關於我們 聯絡資訊
開發環境: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