WinCE下UART设置缓冲区的一个小问题

WinCE相关 专栏收录该内容
5 篇文章 0 订阅

最近调试一个串口设备,使用模块厂家提供的API老是无法实现通信,整来整去就是不行,使用串口工具可以正常的从该串口进行数据通信,但是就是无法跟模块相连通信,厂家一再保证API是ok的,因为他们自己也有相关的应用,而模块在其他场合试过也是好的,这就奇怪了。

仔细查看了API的源码,终于发现问题所在,其打开串口后,就会进行参数配置,每完成一个配置就会查询操作是否成功,一旦发现操作失败,就会停止并退出,而在进行串口缓冲区设置的时候,会失败,于是乎,怎么都打不开串口进行通信。

程序使用SetupComm进行串口的缓冲区设置,但是操作的时候,返回FALSE,ErrorCode是50,代表不支持,上网查了下资料,发现WinCE下是不支持这个的,可是为什么厂家说之前在自己的wince平台下可以呢?原来虽然WinCE不支持这个功能,但是在WinCE5和WinCE6中对该操作的返回是不一样的。

SetupComm会发送IOCTL_SERIAL_SET_QUEUE_SIZE给MDD驱动的IOCONTROL,在WinCE5中,MDD驱动接收这条指令后,不会执行任何操作,返回TRUE,而在WinCE6中,虽然也不执行任何操作,但是会返回FALSE……这个是在微软的PUBLIC代码中,于是乎,之前查了BSP半天都不知道问题出在哪里。

找到问题所在,就好解决了,解决方法有两个:

1、在PUBLIC中进行修改,直接修改mdd层的文件,重新编译完成;

2、将该mdd层文件拷贝到bsp中,修改,然后将bsp的pdd层驱动的source文件修改一下,使其调用的库为bsp内的mdd层lib,这样就不会影响public中的代码。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值