5361|10

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

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

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

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

最新回复

我现在的想法是在应用程序中使用串口类打开或者关闭串口,这样就能运行串口驱动文件里面的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
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
加一个全局bool变量 不就得了? 或者存成文件
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢,我也是这么个想法,但是,这个全局变量怎样加?我如何在bsp和基于wince系统的应用程序中使用它
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
不是用全局变量,而是共享内存。驱动是Kernel环境,应用无法直接跟Kernel通讯的。在内存中划分一个固定大小的空间,在驱动里面可以直接使用,而在应用里面只要用VirtualAlloc/VirtualCopy映射一下就能用。驱动监视,应用修改,即可。像你的需求,只要开最小的就行。

或者驱动里面增加一个IOControl Code,应用来通知也行。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
ls有些概念我不知道是怎么回事,虽然可能你已经讲得很清楚了,但具体的实施不知道怎么做,要找时间了解一些这些个东西
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
写注册表  这是最简单的  根据注册表项目 来确定当前是否需要输出,RETAILMSG即可。 重新启动生效,很方便
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
slyzhang :我不能重新启动系统,我要在应用程序中实现开启与关闭调试串口
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 
那只需要在需要打开串口的时候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
);

就好了
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
尝试通过增加注册表键值的方法来控制这些信息~前提是你已经实现了hive 注册表~~
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

10
 
写注册表的方法不好
1.需要频繁读写注册表,因为无法在初始化调试串口的时候读注册表,这时候注册表可能还没有初始化好,系统api可能也不能用,所以只有在每次调用OEMWriteDebugString的时候读注册表
2.因为在注册表及api未初始化前调用会失败,所以需要增加判断,这样会影响系统性能
所以还是 shuiyan 的方法好
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

11
 
我现在的想法是在应用程序中使用串口类打开或者关闭串口,这样就能运行串口驱动文件里面的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中不能使用这个寒暑,错误提示这个函数为外部的而且没有保存的。请高手指点!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表