S控制台中输入“12345”共5个字符后按回车,如图15。Р图15Р在向串口发送数据时,serial应用程序调用了EOS的API函数WriteFile,而WriteFile最终调用了串口驱动程序的SrlWrite函数,所以会命中设置在SrlWrite函数第一行的断点。打开“调用堆栈”窗口验证函数调用的层次。Р将鼠标指针移动到SrlWrite函数参数Request上,可以查看其值为6。Р说明要发送包括“12345”和字符串结束符“\0”在内的6个字符。如图16。Р图16Р对照SrlWrite的流程图,按F10单步跟踪该函数的执行过程。当变量Data被赋值后,查看变量的值为0x31(字符“1”的ASCII代码)。当执行语句(第332行):РWRITE_PORT_UCHAR(REG_PORT(DeviceObject, THR), Data);Р后,将会命中设置在SrlIsr中的断点,开始调试中断处理程序。激活Terminal工具窗口,可以看到已经接收到字符“1”。如图17-18。Р图17Р图18Р4为EOS串口驱动程序添加从串口接收数据的功能РEOS内核项目代码修改完毕后,按F7生成项目。Р按F5启动调试。Р按照之前练习的方法启动serial.exe和Terminal工具。Р在EOS控制台输入字符串并发送到Terminal工具后,从Terminal工具输入字符串应该可以再发送到EOS控制台,并可以交替的进行输入输出。如图19-20:Р图19Р图20Р实验结果与分析Р实验中遇到的问题:Р在练习使用EOS应用程序向串口发送数据时错误的以为是在Terminal窗口中键入“hello”,导致与实验内容不否的结果Р2.解决方案:Р重启Terminal工具,再次实验。最终在serial中输入“hello”后按回车,Terminal会接收到并显示“hello”如图21-22。Р图21Р图22