怎样在应用程序中控制(使之输出与不输出)调试串口一,即打开或者关闭“调试”串口一

deifwleili   2008-7-28 17:36 楼主
怎样在应用程序中控制(使之输出与不输出)调试串口一,即打开或者关闭“调试”串口一?

用个实例说可能更明白一点:在bsp的触摸驱动里面我需要将坐标信息通过串口发送出去,而有时候我又需要关闭它,不让这些坐标信息发送,该怎么入手

回复评论 (10)

加一个全局bool变量 不就得了? 或者存成文件
点赞  2008-7-28 17:41
谢谢,我也是这么个想法,但是,这个全局变量怎样加?我如何在bsp和基于wince系统的应用程序中使用它
点赞  2008-7-28 17:44
不是用全局变量,而是共享内存。驱动是Kernel环境,应用无法直接跟Kernel通讯的。在内存中划分一个固定大小的空间,在驱动里面可以直接使用,而在应用里面只要用VirtualAlloc/VirtualCopy映射一下就能用。驱动监视,应用修改,即可。像你的需求,只要开最小的就行。

或者驱动里面增加一个IOControl Code,应用来通知也行。
点赞  2008-7-28 18:20
ls有些概念我不知道是怎么回事,虽然可能你已经讲得很清楚了,但具体的实施不知道怎么做,要找时间了解一些这些个东西
点赞  2008-7-28 21:07
写注册表  这是最简单的  根据注册表项目 来确定当前是否需要输出,RETAILMSG即可。 重新启动生效,很方便
点赞  2008-7-28 21:54
slyzhang :我不能重新启动系统,我要在应用程序中实现开启与关闭调试串口
点赞  2008-7-29 08:53
那只需要在需要打开串口的时候create好串口,大概是这个样
HANDLE CreateFile( LPCTSTR lpFileName,
                  DWORD dwDesiredAccess,
                  DWORD dwShareMode,
                  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
                  DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);

然后在要关闭的时候把串口释放掉。大概是这个样子
BOOL CloseHandle(
    HANDLE hObject; //handle to object to close
);

就好了
点赞  2008-7-29 11:32
尝试通过增加注册表键值的方法来控制这些信息~前提是你已经实现了hive 注册表~~
点赞  2008-7-29 11:47
写注册表的方法不好
1.需要频繁读写注册表,因为无法在初始化调试串口的时候读注册表,这时候注册表可能还没有初始化好,系统api可能也不能用,所以只有在每次调用OEMWriteDebugString的时候读注册表
2.因为在注册表及api未初始化前调用会失败,所以需要增加判断,这样会影响系统性能
所以还是 shuiyan 的方法好
点赞  2008-7-29 13:47
我现在的想法是在应用程序中使用串口类打开或者关闭串口,这样就能运行串口驱动文件里面的SL_Open和SL_Close函数(在ser2410_hw.c文件中),于是就相当于有这么一个参数传递进来,建立这样一个变量,在SL_Open函数中判断若是串口一则将变量设定为TRUE,SL_Close函数运行关闭串口一时将变量设定为FALSE,然后在tchpdd.cpp中根据这一变量的值判断是否应当通过串口一发送触摸屏的数据。

现在的问题是,怎样在tchpdd.cpp 和 ser2410_hw.c使用同一个变量?我尝试过新建一个BOOL变量,但是不成功,而且我尝试在tchpdd.cpp文件中写了个设定这个变量的函数,但是在ser2410_hw.c中不能使用这个寒暑,错误提示这个函数为外部的而且没有保存的。请高手指点!
点赞  2008-7-29 15:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复