0

我正在开发一个使用 USB 到 RS485 适配器控制 VFD 的程序。

当我尝试发送命令时,我遇到了 VFD 会短暂闪烁的问题。

为了更深入地检查,我想我会通过运行环回测试来测试我的 USB 到 RS485 转换器(将传输引脚连接到接收引脚,并检查发送的数据是否也被接收。

使用各种串行测试应用程序,我能够验证它是否有效。我会发送数据,它会显示它既发送又接收。

但是,它不适用于我正在编写的程序。当程序启动时,我收到一些发送/接收的信号,上面写着“.enq.”。但是,当程序运行时,它显示数据已发送,但从不显示已收到。我不确定这是否是我设置串行端口的错误。

这是我的设置代码。

        public MITCOM(IniFile INI_in)
    {
        itsINI = INI_in;
        itsName = itsINI.ReadCheckDefault("MITSUBISHI", "Port", "COM4");
        itsBaudRate = Convert.ToInt16(itsINI.ReadCheckDefault("MITSUBISHI", "BaudRate", "19200"));
        itsDataBits = Convert.ToInt16(itsINI.ReadCheckDefault("MITSUBISHI", "DataBits", "8"));
        switch (itsINI.ReadCheckDefault("MITSUBISHI", "Parity", "Even"))
        {
            case "Even":
                itsParity = Parity.Even;
                break;
            case "Odd":
                itsParity = Parity.Odd;
                break;
            default:
                itsParity = Parity.Even;
                itsINI.WriteValue("MITSUBISHI", "Parity", "Even");
                break;
        }
        switch(itsINI.ReadCheckDefault("MITSUBISHI", "StopBits", "2"))
        {
            case "1":
                itsStopBits = StopBits.One;
                break;
            case "2":
                itsStopBits = StopBits.Two;
                break;
            default:
                itsStopBits = StopBits.Two;
                itsINI.WriteValue("MITSUBISHI", "StopBits", "2");
                break;
        }     

        itsPort = new SerialPort(itsName, itsBaudRate, itsParity, 8, itsStopBits);
        itsPort.Open();

这是它用来发送消息的代码:

    public void A1(string _instruction, byte WAIT, Int16 Data)
    {
        var Bytes = new List<byte>();
        Bytes.Add(Control_Code.ENQ);
        Bytes.AddRange(Encoding.ASCII.GetBytes("00"));
        Bytes.AddRange(Encoding.ASCII.GetBytes(_instruction));
        Bytes.AddRange(Encoding.ASCII.GetBytes(WAIT.ToString("X")));
        Bytes.AddRange(Encoding.ASCII.GetBytes(Data.ToString("X2")));
        int SUM = 0;
        for(int i = 1; i < 8; i++)
        {
            SUM += Bytes[i];
        }
        SUM &= 0xFF;
        Bytes.AddRange(Encoding.ASCII.GetBytes(SUM.ToString("X2")));
        Bytes.Add(Control_Code.CR);
        itsPort.Write(Bytes.ToArray(), 0, 11);
    }

重申:

- 通过第 3 方软件(免费设备监控工作室 (FDMS))发送环回测试成功 - 启动我的软件时,我得到一些 .enq。消息。-当我的程序尝试发送数据时,FDMS 显示数据已发送,但未收到。

你们可以提供的任何帮助将不胜感激!

4

0 回答 0