请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AM3358 工具/软件:Linux
MCU:AM3358 + SDK6.0
我想知道如何 驱动一个串行触摸屏。 参考了一些文档、我 更改了 cgtouit213.c 的数据帧并编写了一个在用户空间中工作的代码。
就像这样:
- #define Serio_any 0xff
- #define Serio_MD 0x3f
- int main (int argc、 char* argv[])
- {
- 内部 开发、转台;
- char comdev[20];
- Int ldisc;
- unsigned long 类型;
- struct termios 选项;
- int fd = -1;
- if (argc != 2)
- {
- printf ("---------------------------------------------- \n");
- printf ("\n 用法: %s [串行 设备(1-5)]\n"、 argv[0]);
- printf ("示例: %s 5 n"、 argv[0]);
- printf ("---------------------------------------------- \n");
- 返回 0;
- }
- dev = strtol (argv[1]、NULL、10);
- sprintf (comdev、"/dev/ttyAMA %d "、dev);
- FD = 开路(comdev、O_RDWR|O_NONBLOCK_O_NOCTTY);
- 如果 (FD < 0) {
- 镜像(comdev);
- 退出(1);
- }
- tcgetattr (fd、 &option);
- option.c_iflag = IGNPAR | IGNBRK;
- option.c_cflag = HUPCL | CS8 | CREAD | CLOCAL | B9600;
- option.c_cc[Vmin] = 1;
- option.c_cc[VTIME] = 0;
- cfsetispeed (可选、B9600);
- cfsetospeed (&OPTION、B9600);
- RET = tcsetattr (fd、 tcSANOW、 可选);
- if (ret < 0) {
- perror ("TCSANOW");
- 退出(1);
- }
- ldisc = n_mouse;
- RET = ioctl (FD、TIOCSETD、&ldoc);
- if (ret) {
- Perror ("TIOSETD");
- }
- type = Serio_MD | (Serio_any << 8) | (Serio_any << 16);
- RET = ioctl (FD、SPIOCSTYPE、 &TYPE);
- if (ret) {
- Perror ("SPIOCSTYPE");
- }
- 读取(FD、NULL、0);
- //关闭(FD);
- 返回 0;
- }
但是返回 ioctl (fd、TIOCSETD、&ldoc)和 ioctl (fd、SPIOCSTYPE、&type)都是-1。
请尽快支持我! 谢谢!