• SerialPort 在WinCE 下 调用Open时报错的解决办法


    在Windows CE 6.0环境下开发.NET系统时,我们要用到.NET COMPACT FRAMEWORK 2.0,然而微软的SerialPort在CE6.0的环境下在打开时报错.错误内容如下:

    at System.IO.Ports.SerialStream.WinIOError()
    at System.IO.Ports.SerialStream.WinIOError()
    at System.IO.Ports.SerialStream.CheckResult()
    at System.IO.Ports.SerialStream.SetBufferSizes()
    at System.IO.Ports.SerialPort.Open()


    为了解决这个问题,折腾了很久,我开始怀疑SerialPort在CE6.0下的兼容性,查看MSDN,上面说只要安装了.NET COMPACT FRAMEWORK 2.0即可。

    而且之前的开发中在用到SerialPort.WriteTimeOut属性的时候也出现让人不可思议的结果,程序执行的时候把SerialPort.WriteTimeOut设定的值解释成,每次写完一次后都要经过WriteTimeOut设定的时间后才能写进行下一次的写操作。这让人很郁闷。我本来想每次写完就立即返回的,MSDN上说设置成0表示立即返回。但是如果设置成0又会报错,错误的意思是这个值不能设置成0,只能是正数或者-1。

    折腾了很内,我发现安装.NET COMPACT FRAMEWORK 2.0 sp2后可以修正这些问题,希望能给遇到类似问题的朋友有所帮助。补丁下载地址

    官网上说这个补丁修正了以下错误:

    • NETCFRPM 在 x64 上失败
    • 在 Vista 上,从“控制面板”>“程序和功能”启动 MSI 时安装/卸载失败将无提示
    • 因为 COM 绑定已被绑定,终结器在 RTF 对象上失败
    • 如果未设置 Attach Enabled 注册表项,VS 会在尝试附加时崩溃
    • Thread.Join() 在 CE 6.0 平台上失败,错误为 ERROR_INVALID_HANDLE
    • 循环引用可能引起内存损坏
    • JIT 断言在遇到不存在的 COM 端口时失败
    • 对 NETCF 2.0 使用泛型时发生 TypeLoadException
    • IrDA 在 Windows CE 5.0 设备上中断
    • NetCFRPM 和 MDBG 无法定位无外设设备
    • SerialPort:如果使用 DataReceived 事件检索通过串行端口发送的 Unicode 字符,则会发生数据损坏
    • SerialPort:无法打开超过 COM9 的 COM 端口
    • SerialPort:GetPortNames() 不返回超过 COM9 的串行端口名称
    • SerialPort:如果使用 DataReceived 事件检索通过串行端口发送的 Unicode 字符,则会发生数据损坏
    • 如果已在本机线程上调用了本机回调委托,NETCF 会在退出时发生死锁
    • VS 2005 RTM 在 Windows Mobile 6 平台上尝试部署 NETCFv2.wce5.ARMV4I.cab/System_SR_ENU.cab,而不是 NETCFv2.wm.ARMV4I.cab/System_SR_ENU_wm.cab
    • XmlSerializerializationWriter:当 GetSpecifiedMember 返回 false,序列化被终止,并会导致数据丢失
    • 访问冲突会使用字符串字段封送一个类
    • 从函数计算之后的断点跳出会导致断点仍在相同位置,并且 VS 2005 随后会挂起
    • COM:N->M byref 封装中发生访问冲突
    • 使用 Interlocked.Exchange 时封装代码中出现本机异常
    • StubPolicyAlloc 中有访问冲突 (eestub\policy.cpp)
    • SerialPort.Open 在 CE 6.0 设备上引发 IOException
    • Type.GetDefaultMembers() 不返回基类型的默认成员
    • 安装同一 MSI 的不同区域设置版本会导致在“添加/删除程序”中出现多个 NetCF 实例
    • VS 2005 在 Crossbow 平台上尝试部署 System_SR_ENU.cab 而不是 System_SR_ENU_wm.cab
    • 调试器不能正确处理通过 COM 输入的新本机线程
    • NETCFRPM 在设备使用 ipv6 时不能正确解析连接字符串
    • V2 SP2:HttpWebRequest:HTTPS 请求在使用 TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher 时失败
    • 如果在按 F5 之前有活动断点,调试器会发生访问冲突
    • Web 浏览器的 NavigatingEventArgs 不允许取消导航
    • XmlSerializer 无法反序列化带有空格的枚举


  • 相关阅读:
    欧拉服务器安装虚拟机(根据open欧拉教程编写vnc)
    Pytest生成html测试报告
    FastAPI8路径参数和数值校验
    pytest不在终端执行的方式
    Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/shineqiujuan/p/1647821.html
Copyright © 2020-2023  润新知