c# - 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;
}
}
解决方案
在我的代码中,我混合使用了 pp 调用和对 i2c 文件的调用。我上面的代码是在 i2c 实例中打开端口并使用它来读/写。pp 实例正在使用我的断开连接和检查打开调用,并且没有看到打开的端口,因为它正在被 i2c 调用使用。
推荐阅读
- c# - 有没有办法让 foreach 循环的 MoveNext() 部分在应用于 Azure 存储库 ListBlobs() 的结果时重试操作?
- c# - lambda表达式中的多个like
- svn - 列出来自 svn 忽略目录的文件 (webMethods)
- node.js - Nodejs下载图片
- php - Laravel 验证返回奇怪的消息
- git - Git权限因文件夹而异?
- vba - 对于每个单元格 vba
- c# - C# DataGrid 单元格颜色似乎是随机的 wpf
- c++ - 执行 AES 解密后,字符串末尾的 Crypto++ 和垃圾
- c++ - 两台机器之间通信时我应该将套接字连接到什么IP(ZeroMQ)