Zaberデバイスのシリアルプロトコルの実装は非常に簡単なようですが、C ++のサンプルコードはありますか?
2 に答える
Zaber プロトコルのベア トラップに注意してください。マイクロコントローラーが Zaber モーターとの同期を失った場合、1 つのパケットの後半と次のパケットの前半を読み取れなくなる可能性があります (パケット間のタイミングを検出するには、タイマーを使用する必要があります)。プロトコル ステート マシンをリセットするためのギャップ)
マネージC++を作成している場合は、C#またはVisualBasicプロジェクトの場合と同じように.NETライブラリDLLを使用できます。詳細については、ZaberConsoleのソースコードを参照してください。例はすべてC#またはVisual Basicですが、マネージC++でも同じことができます。
マネージC++を記述していない場合は、シリアルポートに直接書き込む必要があります。コマンドをバイトストリームに変換する方法を示すCコードの例がいくつかあります。このスニペットは、シリアルポートに書き込むための6バイトを準備します。
txBuffer[0] = deviceNum;
txBuffer[1] = command;
// Position 2 is LSB; Position 5 is MSB
txBuffer[2] = ( data & 0x000000FF);
txBuffer[3] = ((data >> 8) & 0x000000FF);
txBuffer[4] = ((data >> 16) & 0x000000FF);
txBuffer[5] = ((data >> 24) & 0x000000FF);
このスニペットは、シリアルポートから受信した6バイトを処理します。
deviceNum = rxBuffer[0];
command = rxBuffer[1];
// Position 2 is LSB; Position 5 is MSB
data = ( rxBuffer[2] & 0x000000FF)
+ ((rxBuffer[3] << 8) & 0x0000FF00)
+ ((rxBuffer[4] << 16) & 0x00FF0000)
+ ((rxBuffer[5] << 24) & 0xFF000000);
シリアルポートへの接続方法はおそらくこの例とは異なりますが、C++コンパイラのドキュメントが役立つはずです。サンプルコードをダウンロードして、プロトコルが同期しなくなった場合にプロトコルをリセットするタイマーなどの詳細を確認してください。
シリアル通信プロトコルの詳細については、ユーザーマニュアルを参照してください。
C ++スクリプトテンプレートはまだ作成していませんが、C++を使用してZaberコンソールスクリプトを作成することもできます。