每天进步一点点_小白白 2022-09-07 20:32 采纳率: 75%
浏览 87
已结题

c#串口通信,DataReceive事件不能触发。

使用串口调试工具Hterm调试,通信没有问题。确认波特率,数据位,port,校验位,停止位都没有问题。看网上设置特别属性设置
comPort.RtsEnable = true
comPort.DtrEnable=true
comport.ReceivedBytesThreshold = 1;
但是还不是有回传。
但发现一个现象,如果用串口工具连接发送一次数据后。使用程序连接,报错,port口被占用,不退程序,然后断掉串口工具连接,回到我写的程序连接,第一次下指令,可以触发一次DataRecieve事件,第二次下指令就不可以了。然后程序断开连接,再次连接,下指令均不可触发DataRecieve事件。好郁闷,求赐教。是哪里出了问题?

vs c# 在加载wpf主界面时注册个DataRecieve事件,定义了该serialport为静态变量。

  • 写回答

2条回答 默认 最新

  • wanghui0380 2022-09-08 08:50
    关注

    从描述上看可能有4个地方
    1.ReceivedBytesThreshold
    https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport.receivedbytesthreshold?view=dotnet-plat-ext-6.0
    这个属性管控触发字节数量,默认是1,假设你设置的比较大,那么接收不够数量的情况他会缓存下来,并不会触发

    2.你代码发送的指令有误,大多数硬件并不会无端发送数据。他得接收正确指令后才会处理,有些硬件如果收到错误指令会返回错误指令,但更多的硬件是直接忽略错误指令根本不返回任何数据

    3.握手Handshake
    https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport.handshake?view=dotnet-plat-ext-6.0
    目前大多数硬件已经不再实现握手标准了,但是不排除少量硬件依然延用以前的握手标准
    4就是波特率这类设置,如果设置不对。你发送数据,对方认为无效,也会不理会你

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月9日
  • 已采纳回答 9月9日
  • 修改了问题 9月7日
  • 创建了问题 9月7日

悬赏问题

  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测