• 4390阅读
  • 1回复

关于QT里的串口操作 [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2006-07-29
接触QT比较少,现在需要将一个Linux C的串口程序用qt/e 2.3.10做出来
在C里对串口的主要操作分为读和写,C中操作的主要程序用子进程完成如下:
  1. switch (fork ())
  2.   {
  3.   case 0:               /* child */
  4.     /* user input */
  5.     close (1);           /* stdout not needed */
  6.     for (c = getchar (); c != ENDMINITERM; c = getchar ())
  7.     write (fd, &c, 1);
  8.     close (fd);
  9.     exit (0);           /* will send a SIGCHLD to the parent */
  10.     break;
  11.   case -1:
  12.     perror ("fork");
  13.     close (fd);
  14.     exit (-1);
  15.   default:             /* parent */
  16.     close (0);           /* stdin not needed */
  17.     sa.sa_handler = child_handler;
  18.     sa.sa_flags = 0;
  19.     sigaction (SIGCHLD, &sa, NULL);   /* handle dying child */
  20.     while (STOP == FALSE)   /* modem input handler */
  21.     {
  22.       read (fd, &c, 1);   /* modem */
  23.       write (1, &c, 1);   /* stdout */
  24.     }
  25.     wait (NULL);         /* wait for child to die or it will become a zombie */
  26.     break;
  27.   }

我有如下几个问题想请教一下:
1.我现在是自定义一个类重载MultiLineEdit里的insertChar( QChar c )函数还每读到一个char然后来显示。似乎有些问题,大部分能正常显示。我想问一下有没有更好的查看显示数据的控件或方式?
2.我现在也是在一个自定义的slot大致按照上面那段C写的一段程序。这样可以在shell里可以输入命令给串口。这样的话读串口的函数一直处于阻塞状态,MultiLineEdit只能看不能动。我在想有没有一种方法可以让程序判断串口是否有数据,如果有就调用insertChar(QChar)来显示,该怎么做?自己定一个一个signal来判断是否有数据?还没尝试,还在找看怎么自己设置signal,怎么设……
3.我需要输入命令,比如从一个LineEdit的控件里接受输入的命令,也是和第二个问题一样,有没有一种方法可以判断键盘是否有数据输入?

因为时间比较急,没有是件来仔细研究QT里相关的东西,只有来发问,希望大家帮忙。或者告诉大致可以解决的方案,我自己去找
多谢
只看该作者 1楼 发表于: 2006-07-29
我现在就想着如何自动判断串口是否有数据然后发送signal调用接受函数
快速回复
限100 字节
 
上一个 下一个