簡體   English   中英

通過USB命令步進電機控制器

[英]Commanding a Stepper Motor Controller over USB

我正在嘗試在Gnu / Linux中對Trinamic StepRocker步進電機控制器進行一些實驗。 我曾經通過USB將設備連接到Windows機器,並使用Trinamic的專有軟件來測試控制器是否按預期運行,而且似乎是。 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虛擬COM端口驅動程序”,所以你不需要libusb:只需在你的程序中打開/ dev / USBtty0(/ dev / ACM0或你的發行版如何創建它)就像常規的RS-232一樣使用它。

您可以使用libusb + libftdi(然后沒有虛擬串行端口)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM