C# 如果在UART模式下设置的FTDI(FT2232H)上使用VCP会发生什么?[COM不太会说话]

C# 如果在UART模式下设置的FTDI(FT2232H)上使用VCP会发生什么?[COM不太会说话],c#,.net,serial-port,uart,ftdi,C#,.net,Serial Port,Uart,Ftdi,我正在开发一个C#程序,它基本上是一个char序列的侦听器,位于连接到FT2232H的SerialPort中。 序列应以任意字符开始,并具有任意长度。 问题不是我没有我期望的正确模式,问题是我根本没有传入芯片的字符,有时它们与其他字节混合,我肯定没有传入芯片 即使是按字符阅读器编写这个字符也不能帮助我理解里面发生了什么 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi

我正在开发一个
C#
程序,它基本上是一个
char
序列的侦听器,位于连接到FT2232H的
SerialPort
中。 序列应以任意
字符开始,并具有任意长度。
问题不是我没有我期望的正确模式,问题是我根本没有传入芯片的字符,有时它们与其他字节混合,我肯定没有传入芯片

即使是按字符阅读器编写这个字符也不能帮助我理解里面发生了什么

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Windows.Forms;

namespace FTDI_VCP
{
class SerialPortProgram
    {
    int _test_counter = 0;
    private string _buffer;
    private SerialPort port = new SerialPort("COM11",
      9600, Parity.Even, 8, StopBits.Two);

    [STAThread]
    static void Main(string[] args)
    {
        new SerialPortProgram();
    }

    private SerialPortProgram()
    {
        Console.WriteLine("incoming chars:");

        port.DataReceived += new
          SerialDataReceivedEventHandler(port_DataReceived);

        port.Open();

       Application.Run();
    }

    private void port_DataReceived(object sender,
      SerialDataReceivedEventArgs e)
    {


        if(port.BytesToRead != 0)
        {
            do {
                int byte2read = port.ReadChar();
                if(byte2read == 0xFF) //this is my arbitrary char value
                {
                    Console.WriteLine();
                }
                else
                {
                    Console.Write((char)port.ReadChar());
                }
            } while (true);
        }
    }
}

假设:

我认为在UART-RS232模式下通过FTDI使用VCP时,我直接在UART缓冲区上进行监听,但我担心,我可能会远程读取其他内容,而不是简单的字符。也许是RS232数据包?也许是另一种模式?我不知道。当我使用COM端口时,谁能帮助我理解UART缓冲区内发生了什么

我已经检查过的似乎没有问题的东西

  • 波特率不匹配
  • 其他设备干扰
  • FTDI处于正确模式

  • 感谢您的关注。我正在等待FTDI专家来帮助我(:

    除了波特率之外,您是否检查了奇偶校验、数据位数、停止位数和握手(RTS、Xon/Xoff)匹配?通常,
    停止位
    应该是
    一个
    。正如@ckuri所建议的,检查您的奇偶校验、停止位和硬件握手。此外,
    奇偶校验
    通常设置为
    。只需使用硬件设备确认它应该设置为串行端口初始化的目标。非常感谢@Baddack,奇偶校验和停止位设置改变了与端口的通信方式!(:这是否意味着它现在正在工作?除了波特率,您是否检查了奇偶校验、数据位数、停止位数和握手(RTS、Xon/Xoff)匹配?通常,
    停止位
    应该是
    一个
    。正如@ckuri所建议的,检查您的奇偶校验、停止位和硬件握手。此外,
    奇偶校验
    通常设置为
    。只需使用硬件设备确认它应该设置为串行端口初始化的目标。非常感谢@Baddack,奇偶校验和停止位设置改变了与端口通信的方式!(:这是否意味着它正在工作?