【发布时间】:2019-06-04 08:57:43
【问题描述】:
我正在使用 CT 系列的 Optris 高温计。硬件方面使用USB接口,软件方面使用COM口通讯。之前,我使用的是这些高温计的旧版本,一切都很好。但是现在我有了一个新设备,我的代码(C++ .NET)现在可以使用它了。使用 Free USB 分析器,我看到数据正在发送到设备,但它对任何命令都没有反应。
我已经检查过的内容(仔细!):
- 我使用正确的数字命令
- 我使用正确的串口设置,并且端口正在打开
- 制造商的两个软件产品都运行良好!所以,设备、电缆等都没有问题
- 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