venus_linux 发表于 2005-9-14 10:01:50

请教LINUX下的串口通信问题

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

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

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

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

我的拨号脚本文件如下:
/etc/ppp/gprs:
noauth
userisp
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                "Press 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进行串口通信。
到底问题出在什么地方,串口硬件?串口程序软件?还是别的什么地方?我应该怎么解决?请大家帮忙出出主意。
非常感谢!
页: [1]
查看完整版本: 请教LINUX下的串口通信问题