接触QT比较少,现在需要将一个Linux C的串口程序用qt/e 2.3.10做出来
在C里对串口的主要操作分为读和写,C中操作的主要程序用子进程完成如下:
- switch (fork ())
- {
- case 0: /* child */
- /* user input */
- close (1); /* stdout not needed */
- for (c = getchar (); c != ENDMINITERM; c = getchar ())
- write (fd, &c, 1);
- close (fd);
- exit (0); /* will send a SIGCHLD to the parent */
- break;
- case -1:
- perror ("fork");
- close (fd);
- exit (-1);
- default: /* parent */
- close (0); /* stdin not needed */
- sa.sa_handler = child_handler;
- sa.sa_flags = 0;
- sigaction (SIGCHLD, &sa, NULL); /* handle dying child */
- while (STOP == FALSE) /* modem input handler */
- {
- read (fd, &c, 1); /* modem */
- write (1, &c, 1); /* stdout */
- }
- wait (NULL); /* wait for child to die or it will become a zombie */
- break;
- }
我有如下几个问题想请教一下:
1.我现在是自定义一个类重载MultiLineEdit里的insertChar( QChar c )函数还每读到一个char然后来显示。似乎有些问题,大部分能正常显示。我想问一下有没有更好的查看显示数据的控件或方式?
2.我现在也是在一个自定义的slot大致按照上面那段C写的一段程序。这样可以在shell里可以输入命令给串口。这样的话读串口的函数一直处于阻塞状态,MultiLineEdit只能看不能动。我在想有没有一种方法可以让程序判断串口是否有数据,如果有就调用insertChar(QChar)来显示,该怎么做?自己定一个一个signal来判断是否有数据?还没尝试,还在找看怎么自己设置signal,怎么设……
3.我需要输入命令,比如从一个LineEdit的控件里接受输入的命令,也是和第二个问题一样,有没有一种方法可以判断键盘是否有数据输入?
因为时间比较急,没有是件来仔细研究QT里相关的东西,只有来发问,希望大家帮忙。或者告诉大致可以解决的方案,我自己去找
多谢