zoukankan      html  css  js  c++  java
  • .Net Micro Framework研究—串口部署的困惑

    昨天从微软拿来一块iPac-9302MF开发板,虽然该板卡接口齐全,但网口、USBSD插槽等都不能使用,目前仅能通过串口进行调试。而恰恰是通过串口进行连接调试和部署的时候,出现我以前在Digi和飞思卡尔MF开发板遇到的同样问题,也就是无法通信成功,相关问题我在《.Net Micro Framework研究—Digi开发板初探http://blog.csdn.net/yefanqiu/archive/2007/10/27/1848438.aspx也详细提到过,就是MFDeployVS2005默认打开串口的参数是115200,偶校验,而开发板的串口的参数是115200,无校验。我和串口打交道少说也有67年了,从我的角度来说,我又只能推测是串口参数不匹配,这到底怎么回事?难道是VS2005MFDeploybug(从这里可以看出封装的最大可恶之处了,我竟然没地方修改串口参数--在设备管理器中配置串口参数是无用的),但这种可能性太小了,毕竟看其说明书上的图片,人家用串口都是调通的啊,这可真见鬼了。

     

     

    MFDeploy Ping失败

     

     

    VS2005部署失败

     

     

    MFDeployVS2005用串口监控软件查看相关参数,如上图,你会发现串口参数为:115200EVEN(偶校验)。

    幸好iPac-9302自带的光盘软件里有一个SJJ_COMM Lite串口软件,可以和开发板进行通信。

     

     

    看的出来,通信是成功的,下面用串口监控软件看看其通信参数。

     

    赫然是115200NONE(无校验)。

     

     

    上图是我的开发环境,刚开始是用串口线直接和iPac-9302的串口相连,通信无法成功。用什么办法解决该问题啊?自己编写一个MFDeploy或修改VS2005的串口参数又不现实,只好用工控的办法解决了,PC机先把数据发送到PLC的串口0(串口参数是:115200,偶校验),PLC接收后,把数据通过串口1(串口参数是:115200,无校验)发送出去,反过来相反。已经快两年没有编写PLC的程序了,幸好程序比较简单。

    主程序:

    LD     SM0.1

    //端口0

    MOVB   16#19, SMB30                //115200 偶校验99

    ATCH   COM0, 8

    //端口1

    MOVB   16#19, SMB130               //115200 无校验

    ATCH   COM1, 25

    //发送数据区首地址
       
    MOVB   1, VB100                    //仅发送一个数据

    MOVB   1, VB200                    //仅发送一个数据

    //中断有效

    ENI

    ------------------

    中断程序0

    LD     SM0.0

    MOVB   SMB2, VB201                 //从端口0接收数据

    XMT    VB200, 1                    //向端口1转发数据

    ------------------

    中断程序1

    LD     SM0.0

    MOVB   SMB2, VB101                 //从端口1接收数据

    XMT    VB100, 0                    //向端口0转发数据

     

     

    很可惜的是在高波特率情况下,接发大量的数据由于PLC处理能力有限,会丢失个别数据,所以MFDeployVS2005依旧无法通信成功。

    只能期待微软和厂家来解决这个问题了。

  • 相关阅读:
    Ubuntu 拦截并监听 power button 的关机消息
    Android 电池管理系统架构总结 Android power and battery management architecture summaries
    Linux 内核代码风格
    Linux 内核工作队列之work_struct 学习总结
    微信小程序 登录流程规范解读
    微信小程序监听input输入并取值
    koala 编译scss不支持中文(包括中文注释),解决方案如下
    阻止冒泡和阻止默认事件的兼容写法
    使用setTimeout实现setInterval
    css实现视差滚动效果
  • 原文地址:https://www.cnblogs.com/yefanqiu/p/1117946.html
Copyright © 2011-2022 走看看