LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1028|回复: 5

有 同志 知道 minicom 和 ascii-xfr 是如何配合的吗?

[复制链接]
发表于 2006-9-28 08:51:41 | 显示全部楼层 |阅读模式
minicom 用 ascii 模式上传文件 用的是ascii-xfr,具体调用 ascii-xfr -dsv <filename>。

但这样调用,ascii-xfr只是输出到标准输出,可minicom却是要输出到串口上的。

很容易猜到是重定向,但是有个问题。

  1. ascii-xfr -dsv <filename> > /dev/ttyS0
复制代码

这样的用法无法设置波特率啊。
 楼主| 发表于 2006-9-28 08:58:51 | 显示全部楼层
或者有什么办法能看到 minicom 调用 ascii-xfr 时的细节?
ps -F 只能看到进程,看不到进程关系。

通过/proc,这两个进程确是用 管道连接。

现在的问题是,
如何查看这个管道的具体细节。
回复 支持 反对

使用道具 举报

发表于 2006-9-28 22:19:15 | 显示全部楼层
波特率并不是每次都要重设的,一次设好后,只要设备不重启(重连)就不会改变。这可以通过 /proc/tty/drivers 下的某个文件看到,具体记不清了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-29 12:41:59 | 显示全部楼层
Thank thee AGAIN!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-14 16:23:24 | 显示全部楼层
又要重提此事,请DoDo大哥帮我看看。

用看到当minicom调用ascii-xfr上传文件时,用ps aux看到的命令格式是

  1. mm        6854  0.2  0.3   1948   700 pts/1    S+   03:14   0:00 ascii-xfr -dsv file.hex
复制代码


但是它是怎么把文件定向到/dev/ttyS1里的呢?
直接ascii-xft是显示在标准输出上啊。
回复 支持 反对

使用道具 举报

发表于 2006-12-14 20:39:44 | 显示全部楼层
真是不好意思,我从来没有在 minicom 中上传或下载过文件,都是用网线的

刚才看了一下 minicom 的代码,minicom 发送文件是是由 updown.c 中的 updown() 函数完成的,大体上来说,它在这里 fork 成了两个进程,父进程也就是我们能够看到的那个监视进程,而子进程则负责发送文件,其代码如下:
  1.   switch (udpid = fork()) {
  2.     case 0: /* Child */
  3.       if (P_PIORED(g) == 'Y') {
  4.         dup2(portfd, 0);
  5.         dup2(portfd, 1);
  6.       }
  7.       if (win) {
  8.         dup2(pipefd[1], 2);
  9.         close(pipefd[0]);
  10.         if (pipefd[1] != 2)
  11.           close(pipefd[1]);
  12.       }
  13.       for (n = 1; n < _NSIG; n++)
  14.         signal(n, SIG_DFL);
  15.       set_privs();
  16.       setgid((gid_t)real_gid);
  17.       setuid((uid_t)real_uid);
  18.       fastexec(translate(cmdline));
  19.       exit(1);
  20.     }
复制代码
fastexec() 是在 util.c 中实现,它主要就是调用 execl 来调用 外部指令,比如 ascii-xfr,来传送文件,没有什么特殊的。

关键在于子进程中对于 portfd 的重定向,这里我没有细看其它相关的代码,只能猜测一下:子进程中的 portfd 被分别重定向到标准输入与输出,而父进程中某处可能对 portfd 进行重定向,使之与串口的输入与输出分别相连,于是 ascii-xfr 的输出最终得以输出到串口。这样说应该是讲得通的,楼主如果有兴趣可以进一步看看代码。

P.S. 我似乎没有楼主大,叫我小弟就好了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表