做了一个利用SerialPort串口的小程序,不过过程中遇到一个小问题,就是程序一启动的时候接收到几个下位机的数据后自动就发送一两个字节命令数据去单片机下位机,这个时候单片机有时候却不响应者第一个命令,但有时候又响应,单片机接受命令格式及处理都是一样的。上位机软件启动以后,凡是通过软件界面按钮操作的发送命令下位机单片机都可以接受,那为什么软件刚启动(相当于初始化,也就是软件启动后不久)却有时候不灵了呢?这个SerialPort.WriteByte有没有发送延时问题?我怀疑上位机发送命令数据落后延时了,导致单片机错过了允许接受的时间片段(过了这个时间片段,单片机不再响应串口数据而去处理其它去了)。
单片机串口是模拟的不是硬件的,半双工,没有握手和奇偶校验
单片机串口是模拟的不是硬件的,半双工,没有握手和奇偶校验
解决方案 »
- C#用mouse_event模拟鼠标点击窗体失去焦点后无效的问题
- 未将对象引用到对象实例
- 怎么同时导出两张报表
- 在ReportViewer中引用Rdlc文件:
- 怎样可以让winform里的textbox, lable, combobox 之类的还原最初的值
- 求VISUAL STUDIO 2005 TEAM SUIT 简体中文正式版
- 一个关于Parallel与Thread.Sleep的问题
- 根据Treenode全路径如何生成完整的Treeview树?
- 文本框如何显示图片
- 由于工作需要。求.net 技术文章 ,有中英文翻译 (2000字以上)
- 数组保存到本地电脑
- base64(utf-8)编码解码,求解
就是启动上位机的时候,软件自动发送的命令会失效,只有软件启动后软件才会自动发送呀,启动以后就不再自动发送了,界面操作按钮才发送命令数据,也就是软件启动后发送一条命令给下位机单片机报告单片机的一些状态,以后就不自动发送命令了,就是这一条自动发送的命令有时候会失效。在软件中我设置了延时,等软件启动过后一段时间再SerialPort.WriteByte发送命令,这样失效概率大大减少,不过这个延时时间不能设置太长呀,不然初始化时间太长。
和flcl已经解决,找到原因,还是因为我的程序的结构安排不小心不恰当不过还是谢谢你们,也给我了其它的有益提示