3

Gnu/Linux の Trinamic StepRockerステッパー モーター コントローラーでいくつかの実験をしようとしています。以前に USB 経由でデバイスを Windows マシンに接続し、Trinamic独自のソフトウェアを使用して、コントローラーが期待どおりに機能しているかどうかをテストしました。StepRocker の初心者向けマニュアルには、モーターを左、右、または停止させるためにシリアル インターフェイス経由で送信する必要がある特定のコマンドが記載されています。しかし、このコントローラーを USB 経由で Gnu/Linux コンピューターに接続し、独自の C++ (libusb) プログラムを作成してモーターを動かしたい場合、何から始めるべきかよくわかりません。コンソール アプリケーション (これを作成する予定です) はノンブロッキングである必要があります。

以下は、rotate コマンドの発行中に送信されるデータグラムと受信される応答のイメージです。

ここに画像の説明を入力

写真に示されている回転値データグラムをモーターコントローラーに供給する簡単なプログラムを作成しようとしました。

#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 の動作が変更されることはありません (もちろん、モーターは動きません)。

4

2 に答える 2

1

彼らは「USB仮想COMポートドライバー」と言っているので、libusbは必要ありません。通常のRS-232のように、プログラムで/ dev/USBtty0(/ dev/ACM0またはディストリビューションがどのように作成するか)を開き、操作します。

于 2013-01-11T13:25:28.677 に答える
0

libusb + libftdi を使用できます (その場合、仮想シリアル ポートはありません)。

于 2013-01-11T13:12:02.837 に答える