1

プラグを差し込んだusb-serialデバイスをWindowsに接続し、仮想ボックスを使用してシリアルマッピングしました(例:COM1-> / dev / ttyS0)。

デバイスが使用しているシリアルポートをどのように知ることができますか。/dev/ttyS0を使用していることがわかります。しかし、わからない場合はどうなりますか?.. Linux Debianは、起動時に/ dev/ttyS0-S3でこの永続的なシリアルポートデバイスを作成しています。

/ dev/ttyS0がcで使用している実際のポートであるかどうかをテストするにはどうすればよいですか。

これが正しいポートかどうかをテストする私の方法です。

devfd=open("/dev/ttyS0",O_WRONLY | O_NOCTTY | O_NDELAY);

        if(s_fd<0) exit(1);

        printf("open\n");    //It will always return true printing open because this device is created on boot time and is always available. so i made another check and that is to write to the port(Assuming i have set the permission to have full access to the serial port). if i can write to the port then it means it is really the port im using.

test=write(devfd,"ATZ",4);

if(test<0) printf("Can't write to port: Maybe not the serial port ur using\n");

printf("Device is avaialable\n");  // returns true because we can write to the port

シリアルポートに接続されているデバイスがある場合にシリアルポートを確認する方法のcの他のサンプルを見せてもらえますか?

または、次のシリアルポート/ dev / ttyS0-/ dev / ttyS3に対して、次のデバイスが接続されている場合は、cでテストします。

ありがとう。

4

2 に答える 2

0

あなたStandard Serial portsが正しく述べたように、/ ttyS0、/ ttyS1、...としてマップされます。一般的なUSB Serial Portsだけでなく、ほとんどG3 modemsは次の方法でアクセスでき/dev/ttyUSB0ます/dev/ttyUSB255

ATIxシリアル ポートがモデムに「接続」されているかどうかを識別するより良い方法は、コマンドをシリアル ポートに送信することです。これらは、デバイスのモデル名やその他の多くの詳細を検出するために使用できるIdentityコマンドです。

まずATIx、ボーレートを変更せずにコマンドを送信してみます。ASCII有効な応答 (複数行のテキストが後に続く) を受信しない場合はOK<CR><LF> ERROR...<CR><LF>、ボー レートを変更して再試行することができます。最初にポート速度でサポートされる最大速度を設定し、次にモデムが見つかるまで速度を下げることをお勧めします。 110ボーまたはその他の合理的な制限。

シリアル ポートに何も接続されていない可能性が高いかどうかを検出する方法があります。背後にある考え方は、妥当な時間 (選択したボーレートで 1 バイトを受信するのに 10 回)、たとえば 2 ~ 3 秒持続するフレームエラーを検出することです。フレーム エラー検出を有効/無効にする方法を確認するには、 を参照してくださいman termios。ただし、説明したセットアップでこれが(VM内から)可能になるかどうかは絶対にわかりませんので、試してみる必要があります。

この投稿も参照してください。Ubuntu 10.10 で端末をシリアル USB デバイスに接続する方法は?

于 2012-10-02T01:21:02.717 に答える