2

コンピュータに接続すると USB シリアル デバイスとして機能するように設定した AVR があります。シリアル経由でコマンドを送信したい。

ただし、応答を送受信するコマンドを取得することはできません。一度に 16 ビットのデータを送信し、16 ビットの応答を受信することを期待していますが、代わりにプログラムが応答を待ってハングします。シリアルおよび USB ドライバーの出力バッファリングに関係していると思われます。

シリアルポートを制御する方法を調べてみましたが、多くのオプションは実際のシリアルポート (USB シリアルではない) にしか適用できないため、どのオプションが必要かを判断するのは困難です。

現時点では、このコードを使用してデバイスファイルを開いています

int fd = open(device, O_RDWR | O_NDELAY | O_SYNC | O_NOCTTY);
struct termios tio = {0};
cfmakeraw(&tio);
tio.c_cc[VMIN] = 2;
tcsetattr(fd,TCSANOW,&tio);

必要なものに適切なオプションを選択するのを手伝ってくれる人はいますか? 出力バッファリングがまったくない (またはほとんどない) 同期の直接アクセスが必要なだけです。

4

0 に答える 0