私はのは、そのピン5を想定してみましょうUbuntuの16.04 下のRS232 DB9オスコネクタで働いているが、私はecho "pippo" > /dev/ttyS0
のようなコマンドを使用して、私はそれを見ることができるプロトコルアナライザを使用して、端末からの接続に書き込むことができる地面 です:書き込みがアプリケーション経由ではなく端末経由で行われると、rts信号が異なるのはなぜですか?
- ピン3が正常信号
- ピン4とピン7を送信している
- ピン4とピン7、ピン3
- ピン4とピン7上のデータ伝送ながら共にハイであるデータ送信前に、両方の低いですdの後に両方とも低い私は、次のCコード
int file_descriptor = open ("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); unsigned char* buffer = (unsigned char*)"pippo"; buffer_length = strlen((char*)buffer); unsigned int written = 0; while(written<buffer_length){ unsigned int tmp = write (this_ptr->dev_file_descriptor, buffer+written, buffer_length-written); if(tmp <0){ break; } written += tmp; } tcdrain(this_ptr->dev_file_descriptor); if(written != buffer_length){ perror("Serial write failure\n"); return-1; } close(file_descriptor);
を実行しようとした場合、ピンのATAトランスミッション3
は、今私は
- データはピン3しかし
- ピン4に伝達されていることがわかりますピン7は常にLOWです
私はRTSが必要ですこれらの2つのシナリオで動作が異なる理由を理解してください。
stty -F /dev/ttyS0 -a
の出力は、実際
速度9600ボーです。行0;列0;ライン= 0; intr =^C; quit =^\;消去= ^?;殺す=^U; eof =^D; eol =; eol2 =; swtch =; start =^Q;ストップ=^S; susp =^Z; rprnt =^R; werase =^W; lnext =^V;廃棄=^O; min = 1;時間= 0; -parenb -parodd -cmspar CS8 HUPCL -cstopb CREAD CLOCAL -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr ICRNL IXON -ixoff -iuclc -ixany -imaxbel -iutf8 OPOST -olcuc -ocrnl onlcrが-onocr -onlret -ofill -ofdel NL0 CR0 TAB0のBS0のVT0のFF0 ISIG ICANON IEXTENエコーECHOE ECHOK -echonl -noflsh -Xcase -tostop -echoprt echoctl echoke -flusho -extproc
と私が言ったようにそれが動作私のアプリケーションからではありません。
おかげで、私はすべてのエラー処理を含めるつもりはない