【问题标题】:Commanding a Stepper Motor Controller over USB通过 USB 控制步进电机控制器
【发布时间】:2013-01-11 13:00:01
【问题描述】:

我正在尝试在 Gnu/Linux 中的 Trinamic StepRocker 步进电机控制器上做一些实验。我之前通过 USB 将设备连接到 Windows 机器,并使用 Trinamic 的 proprietary software 测试控制器是否按预期运行,并且似乎是。 StepRocker 的初学者手册提到了应该通过串行接口发送的某些命令,以使电机向左、向右旋转或使其停止。但是当我通过 USB 将此控制器连接到 Gnu/Linux 计算机,并想编写自己的 C++ (libusb) 程序来使电机移动时,我不太确定我的起点应该是什么。控制台应用程序(我打算编写)应该是非阻塞的。

这是在发出旋转命令时正在发送的数据报和收到的响应的图像:

我尝试编写一个简单的程序,将图中所示的旋转值数据报提供给电机控制器:

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <unistd.h>

int fd1;
int wr;
int main()
{
    fd1=open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY);
    if (fd1 == -1 )
    {
    perror("open_port: Unable to open /dev/ttyACM0");
    }
    else
    {
    fcntl(fd1, F_SETFL,0);
    printf("Port 1 has been sucessfully opened and %d is the file description\n",fd1);
    char moveMsg[9]={0x01,0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xbc, 0xc0};
    wr = write(fd1, moveMsg, 9);
    }
    close(fd1);
    return 0;
}

但这不会以任何方式改变控制器的 LED 行为(当然也不会移动电机)。

【问题讨论】:

  • 通过USB连接它不只是显示为虚拟串口吗?

标签: c++ linux usb libusb motordriver


【解决方案1】:

他们说“USB 虚拟 COM 端口驱动程序”,所以您不需要 libusb:只需像常规 RS-232 一样在您的程序中打开 /dev/USBtty0(/dev/ACM0 或您的发行版将如何创建它)并工作用它。

【讨论】:

  • 谢谢!我在这方面没有任何经验。向我指出一个例子或类似的东西将不胜感激。我的发行版是 Ubuntu。
  • 我已经在my LJ(仅限俄语)中写了一些关于它的内容。很快:要检查您是否可以通过 USB-CDC 使用该板,安装类似 tinyserial 的东西,运行 com /your/device(也许您必须提高速度,但我认为不需要),然后尝试向您的设备发送简单命令(您有命令协议,是吗?)。
  • 我已经添加了一些关于问题的更多细节。我可以看到正在发送和接收的数据报。我只是不知道如何发送这些消息并通过 C++ 捕获输出。
  • 尝试:echo -e "\x1\x1\x0\x0\x0\x0\x2\xBC\xC0" &gt; datagram 然后将文件datagram 的内容复制到com 终端。或者在 C 或 C++ 上编写一个简单的程序。 BTW 数据报简单解码。
  • 顺便说一句。 strlen 将返回 2,将 wr = write(fd1, moveMsg, strlen(moveMsg)); 更改为 wr = write(fd1, moveMsg, 9);
【解决方案2】:

你可以使用 libusb + libftdi(那时没有虚拟串口)。

【讨论】:

  • 您能给我举几个例子吗?在文档中,它只谈到向自己的专有工具发出命令。比如ROL 0, 500表示向左旋转500速。但是我怎么会通过C++发出这样一个我看不懂的命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多