【问题标题】:Troubles with high baud rates of serial port串口波特率高的问题
【发布时间】:2019-06-04 08:57:43
【问题描述】:

我正在使用 CT 系列的 Optris 高温计。硬件方面使用USB接口,软件方面使用COM口通讯。之前,我使用的是这些高温计的旧版本,一切都很好。但是现在我有了一个新设备,我的代码(C++ .NET)现在可以使用它了。使用 Free USB 分析器,我看到数据正在发送到设备,但它对任何命令都没有反应。

我已经检查过的内容(仔细!):

  1. 我使用正确的数字命令
  2. 我使用正确的串口设置,并且端口正在打开
  3. 制造商的两个软件产品都运行良好!所以,设备、电缆等都没有问题
  4. Optris 支持人员告诉我,从开发人员的角度来看,与以前的设备相比没有任何变化

旧设备与新设备的唯一区别是波特率。以前是9600,现在是115200。看来问题可能出在这。

这也是我的代码片段:

在类构造函数中:

sp = gcnew SerialPort(ComPort, 115200, Parity::None, 8, StopBits::One);

当我开始获取时:

sp->DtrEnable = true;
sp->DataReceived += gcnew SerialDataReceivedEventHandler(this, &Pyrometer::OnDataReceived);
sp->BaseStream->Flush();
ThreadPool::QueueUserWorkItem(gcnew WaitCallback(this, &Pyrometer::callBack), sp);

在回调中:

Thread::Sleep(500);
sp->Write(gcnew array<wchar_t> {0x52, 0x01, 0x53}, 0, 3); // Burst mode

我还尝试了更长的唤醒时间 - 没有结果。

有人知道可能是什么问题吗?我在这个问题上浪费了很多时间。非常感谢!

【问题讨论】:

    标签: .net visual-c++ serial-port hardware


    【解决方案1】:

    最终,我找到了一个令人惊讶的解决方案。我将设备的端口从 COM4 更改为 COM3(在系统和代码中)。它开始起作用了。以前,即使停止了防病毒软件和防火墙,它也无法正常工作。这似乎是 Windows 中的一个错误,或者我什至不知道它是什么。太奇怪了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多