首页 > 解决方案 > C# 中的 PSOC 端口连接

问题描述

我在使用赛普拉斯的 PSOC Programmer 提供的 PP_COM_Wrapper dll 中的端口接口时遇到问题。我正在使用 CY8CKIT-0529 PSOC 5LP 原型设计套件。我能够成功打开电路板的端口,并验证我可以使用 PSOC 提供的 USB-I2C 桥对其进行写入。但是,当我关闭端口或检查端口是否打开时,命令会返回端口已关闭。对于 closeport() 命令,它返回 -1 和“端口未打开!” 对于 IsPortOpen() 命令,它返回一个 0,表示端口已关闭,并且没有错误消息。运行这两个命令后,我仍然可以通过 I2C 向电路板写入数据。我附上了我正在运行的用于连接、断开连接和检查以下状态的代码。任何关于我为什么无法关闭端口以及程序为什么认为端口已关闭的反馈将不胜感激。我错过了命令的使用吗?

PP_COM_Wrapper Api:赛普拉斯的 Api 文档

PP_COM_Wrapper 的使用:
PP_COM_Wrapper.PSoCProgrammerCOM_ObjectClass pp = new PSoCProgrammerCOM_ObjectClass();

开放端口:

private void dbgConnect_Click(object sender, EventArgs e)
{
    string err;
    string[] array = i2c.GetPorts();
    int hr = i2c.OpenPort(array[0]);
    err = i2c.GetLastError();
    if (!err.Equals(""))
    {
        MessageBox.Show(err, "Connection Error", MessageBoxButtons.OK);
    }

    pp.IsPortOpen(out hr, out err);
    if (!err.Equals(""))
    {
        MessageBox.Show(err, "Connection Error", MessageBoxButtons.OK);
    }
}

端口是否开放:

private void button2_Click(object sender, EventArgs e)
{
    int hr;
    string err;
    pp.IsPortOpen(out hr, out err);
    if (!err.Equals(""))
    {
        MessageBox.Show(err, "Connection Status", MessageBoxButtons.OK);
    }
    else
    {
        MessageBox.Show("Connected", "Connection Status", MessageBoxButtons.OK);
    }
}

断开端口:

private void dbgDisconnect_Click(object sender, EventArgs e)
{
    string err;
    int hr = pp.ClosePort(out err);
    if (!err.Equals(""))
    {
        MessageBox.Show(err, "Connection Status", MessageBoxButtons.OK);
    }
    if (hr >= 0)
    {
        dbgStatus.BackColor = Color.Red;
    }
}

标签: c#psoccypress-psoc

解决方案


在我的代码中,我混合使用了 pp 调用和对 i2c 文件的调用。我上面的代码是在 i2c 实例中打开端口并使用它来读/写。pp 实例正在使用我的断开连接和检查打开调用,并且没有看到打开的端口,因为它正在被 i2c 调用使用。


推荐阅读