【讨论】请教LINUX下的串口通信问题

为了测试机器人(可以理解成一台普通的PC机)身上的串口的好坏,我将其与另一台普通PC机通过串口相连(二者都运行LINUX系统,不过PC机上的内核是2.4版本的,而机器人上是2.2版本的),并做了如下三个实验,实验结果很奇怪,请大家帮忙看看:

实验一:一台机子向串口发送时间消息(date >/dev/ttyS0),另一台接受(cat </dev/ttyS0)。结果是:PC机和机器人的收发都可以进行。

实验二:通过minicom来测试。结果是:在minicom运行中,敲机器人的键盘,可以在PC机上同步显示所键入的字符;而敲PC机的键盘,机器人的显示器(和普通PC机一样)上没有任何反应。

实验三:拔掉其间的串口连接线,分别用各自的串口连接GPRS MODEM,运行拨号程序。结果是在PC机上可以正常拨号上网,而在机器人上运行结果如下:
[root@jinxin root]# pppd file /etc/ppp/gprs
Press CTRL-C to close the connection at any stage!
defining PDP context...
[root@jinxin root]#

我的拨号脚本文件如下:
/etc/ppp/gprs:
noauth
user  isp
remotename isp
ipparam isp
/dev/ttyS0    #serial cable
9600
nodeflate
asyncmap 20A0000
escape 0xff,0xf9,0x83,0xdb,0x81,0x7f,0x8f,0x9f,0xa2,0xd6
file   /etc/ppp/gprs-options
connect /etc/ppp/chat/gprs-connect-chat
disconnect /etc/ppp/chat/gprs-disconnect-chat

/etc/ppp/gprs-options:
defaultroute
nodetach
debug
mtu 576
mru 500
noipdefault
ipcp-accept-local
ipcp-accept-remote
novj
novjccomp
lock
receive-all
noaccomp
noccp
nopcomp
nomagic
nomp

/etc/ppp/chat/gprs-connect-chat:
exec chat       \
TIMEOUT  5    \
ECHO   ON    \
ABORT  '\nBUSY\r'   \
ABORT  '\nNO ANSWER\r'   \
ABORT  '\nNO CARRIER\r'  \
ABORT  '\nNO DIALTONE\r'  \
ABORT  '\nRINGING\r\n\r\nRINGING\r' \
''  \rAT    \
TIMEOUT  20    \
SAY  "ress CTRL-C to close the connection at any stage!" \
SAY  "\ndefining PDP context...\n" \
OK  ATE1    \
OK  'AT+CGDCONT=1,ip,cmnet' \
OK  'ATD*99***1#'   \
TIMEOUT  22    \
SAY  "\nwaiting for connect...\n" \
CONNECT  ""    \
SAY  "\nConnected." \
SAY  "\nIf the following ppp negotiations fail,\n" \
SAY  "try restarting the phone.\n"
从结果看:显然是执行到“SAY "\ndefining PDP context...\n"”一步时,下一步“OK ATE1”没有执行。

以上就是我所做的三个实验,结果颇为令人费解:从实验一来看,串口可以实现双向通信;而从实验二来看,机器人的串口似乎只能发不能收;再看实验三,机器人似乎无法与MODEM进行串口通信。
到底问题出在什么地方,串口硬件?串口程序软件?还是别的什么地方?我应该怎么解决?请大家帮忙出出主意。
非常感谢!