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