将字符串发送到ciacomport

时间:2015-12-31 02:21:09

标签: delphi delphi-7

我正在尝试编写一个Delphi应用程序来控制科学仪器。我监控了连接到仪器的串口,发现计算机通过向仪器发送18个空字符来建立通信,如下所示:

00 then 20ms delay
00 00 00 00 00 00 00 00 then 30ms delay
00 then 20ms delay
00 00 00 00 00 00 00 00

然后仪器会响应一系列空字符。

使用TCiaComPort Delphi组件,我编写了以下代码,将前18个字符发送到仪器。

Serial1.Open := True;

Serial1.SendStr(chr($00));

Sleep(20);

Serial1.SendStr(chr($00) + chr($00) + chr($00) + chr($00) 
    + chr($00) + chr($00) + chr($00) + chr($00));

Sleep(30);

Serial1.SendStr(chr($00));

Sleep(20);

Serial1.SendStr(chr($00) + chr($00) + chr($00) + chr($00) 
          + chr($00) + chr($00) + chr($00) + chr($00));

然后我在TCiaComPort的OnDataAvailable事件中设置一个断点,一旦仪器响应但应用程序没有到达断点,表明仪器没有响应,就停止应用程序。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

  1. 检查端口设置是否相同(波特率,流量控制等)
  2. 检入端口监视器,程序发送与专用字节序列相同的字节序列(没有换行等)
  3. 如果您的设备对时间间隔非常敏感,则无法保证它们准确无误。
  4. ciacomport中是否有任何事件掩码设置(为RXCHAR做好准备)?
  5. 设备只使用零字节,这很奇怪。您确定看到真正的数据交换吗? (尝试来自Russinovich / Microsoft的PortMon)