.Net Micro Framework研究—串口部署的困惑
昨天从微软拿来一块iPac-9302的MF开发板,虽然该板卡接口齐全,但网口、USB、SD插槽等都不能使用,目前仅能通过串口进行调试。而恰恰是通过串口进行连接调试和部署的时候,出现我以前在Digi和飞思卡尔MF开发板遇到的同样问题,也就是无法通信成功,相关问题我在《.Net Micro Framework研究—Digi开发板初探》http://blog.csdn.net/yefanqiu/archive/2007/10/27/1848438.aspx也详细提到过,就是MFDeploy和VS2005默认打开串口的参数是115200,偶校验,而开发板的串口的参数是115200,无校验。我和串口打交道少说也有6、7年了,从我的角度来说,我又只能推测是串口参数不匹配,这到底怎么回事?难道是VS2005和MFDeploy有bug(从这里可以看出封装的最大可恶之处了,我竟然没地方修改串口参数--在设备管理器中配置串口参数是无用的),但这种可能性太小了,毕竟看其说明书上的图片,人家用串口都是调通的啊,这可真见鬼了。
MFDeploy Ping失败
VS2005部署失败
MFDeploy和VS2005用串口监控软件查看相关参数,如上图,你会发现串口参数为:115200,EVEN(偶校验)。
幸好iPac-9302自带的光盘软件里有一个SJJ_COMM Lite串口软件,可以和开发板进行通信。
看的出来,通信是成功的,下面用串口监控软件看看其通信参数。
赫然是115200,NONE(无校验)。
上图是我的开发环境,刚开始是用串口线直接和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处理能力有限,会丢失个别数据,所以MFDeploy和VS2005依旧无法通信成功。
只能期待微软和厂家来解决这个问题了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?