する質問をすることでしか得られない、回答やアドバイスがある。25行いたいことLinux(Debian)から外部デバイスに対してシリアル通信を行いたくプログラムを記載しています。言語はCで、Linux側のシリアルは/dev/ttyS0として認識しています。外部デバイスに対して"TC\r\n"を送信すると、時刻情報が戻ってくるはずなのですが、どうもシリアル送信できていないようなのです。外部デバイスからデータを手動で送ってもらうと、なぜか受信はできており、送信だけができない状態のようなのです。受信確認は別なプログラムで、無限ループの中、readを行っているだけのものです。0;}ご教授、賜れましたら幸いです。attachmentクリップ1気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。CREAD等をセットしています。これだとゴミのビットパターンがセットされたままになり、不適切な設定がされてしまう可能性が高いです。memsetなり宣言時の初期化なりで、あらかじめ0クリアしてください。write()などのシステムコール実行時は返り値のチェックと、エラーであればerrnoをチェックしてください。書き込みでBUSY状態のようなことになっていれば、selectで書き込み可となるまで待機した方が良いかと思われます。あと気になったこととしては、+=でビットパターンをセットしている部分で、ビットパターンを扱う上では良い書き方ではありません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。13:10dodox86様ご回答、ありがとうございます。ご指摘に従い、次の通り追記してみました。Successの状態でシリアルから電文は送られていないようです。ご回答、ありがとうございます。ご指摘に従い、次の通り追記してみました。Successの状態でシリアルから電文は送られていないようです。編集minicomでは送受信成功とのことですが、minicomで送信した内容が、デバイス側で正しく受信できている、との意味ですよね。デバイスではなく、対抗のPCの端末にして受信させてみたり、シリアルのクロスケーブルで自PCに折り返して確認したりはできないでしょうか。minicomでは送受信成功とのことですが、minicomで送信した内容が、デバイス側で正しく受信できている、との意味ですよね。デバイスではなく、対抗のPCの端末にして受信させてみたり、シリアルのクロスケーブルで自PCに折り返して確認したりはできないでしょうか。13:33デバイス側が結果としてどう動くか、と言うより、デバイス側(受信側)でどのようなデータを受信できているか(できていないか)を確認するのが先決だと思います。デバイス側が結果としてどう動くか、と言うより、デバイス側(受信側)でどのようなデータを受信できているか(できていないか)を確認するのが先決だと思います。したらデバイスへのwriteでの送信はちゃんと成功していて、デバイス側は受信できているものの、readが早すぎてデバイス側からのレスポンスを受信する前に終わっちゃっているということはありませんでしょうか。9,600bpsは結構遅いです。readの前に少しwaitを入れてみてください。readでブロックしているのであればwaitで待機の必要は無いですが。したらデバイスへのwriteでの送信はちゃんと成功していて、デバイス側は受信できているものの、readが早すぎてデバイス側からのレスポンスを受信する前に終わっちゃっているということはありませんでしょうか。9,600bpsは結構遅いです。readの前に少しwaitを入れてみてください。readでブロックしているのであればwaitで待機の必要は無いですが。13:56readで返り値が0なら恐らくブロックしてないでシステムコールからすぐ戻っているので、readの呼び出しが早すぎといえます。SIGSEGVで落ちると思います。readで返り値が0なら恐らくブロックしてないでシステムコールからすぐ戻っているので、readの呼び出しが早すぎといえます。SIGSEGVで落ちると思います。ご回答、ありがとうございます。minicomについては改行コード(\r\n)の都合、本来の電文ではなく、何かしらの送受信はできているとの確認までで、電文内容まで確認できておりません。ご教授いただいた通り、相手側デバイスをPCに変え、minicomやWindowsのTeraTermなどを使用して、電文がきちんと送受信できてるか、まず確認してみます。最後に言い訳がましくて恐縮ですが、実機が遠隔にあり、直ぐにご返答できないのですが、色々とご指導賜り、感謝申し上げます。ありがとうございます。ご回答、ありがとうございます。minicomについては改行コード(\r\n)の都合、本来の電文ではなく、何かしらの送受信はできているとの確認までで、電文内容まで確認できておりません。ご教授いただいた通り、相手側デバイスをPCに変え、minicomやWindowsのTeraTermなどを使用して、電文がきちんと送受信できてるか、まず確認してみます。最後に言い訳がましくて恐縮ですが、実機が遠隔にあり、直ぐにご返答できないのですが、色々とご指導賜り、感謝申し上げます。ありがとうございます。14:02再度のアドバイス、ありがとうございます。変更したうえでチャレンジしてみます。再度のアドバイス、ありがとうございます。変更したうえでチャレンジしてみます。実機が遠隔にあり、直ぐにご返答できないいえいえ、今分かる限り、と言うのは仕方無いです。連投したのはこちらの勝手ですのでお気になさらないでください。変更したうえでチャレンジしてみます。rBuf[i])かな、と思いましたが、"%2X"でも良いと思います。いえいえ、今分かる限り、と言うのは仕方無いです。連投したのはこちらの勝手ですのでお気になさらないでください。変更したうえでチャレンジしてみます。rBuf[i])かな、と思いましたが、"%2X"でも良いと思います。08:41昨晩、確認させていただきました(私自身ではないのですが...)。送信側はWin10(ホストOS)+VirtualBox(Vagrant)でのLinux(Debian)。相手デバイスから送信するとminicom/自作PGとも受信できるが、共に送信できていない。minicomから送信可と申しましたが不可のようでした。ホスト側をRaspberryPIに変更したところ送受信できるようになった。プログラムの変更はありません。アドバイスいただきました通り、プログラムを疑う前に実機にて動作確認が先でした。真の原因究明までには至っておりませんが、プログラムとしてはご指導いただいた内容で問題ありませんでした。お騒がせし申し訳ありませんことと、適切なアドバイス頂戴しましたこと感謝申し上げます。昨晩、確認させていただきました(私自身ではないのですが...)。送信側はWin10(ホストOS)+VirtualBox(Vagrant)でのLinux(Debian)。相手デバイスから送信するとminicom/自作PGとも受信できるが、共に送信できていない。minicomから送信可と申しましたが不可のようでした。ホスト側をRaspberryPIに変更したところ送受信できるようになった。プログラムの変更はありません。アドバイスいただきました通り、プログラムを疑う前に実機にて動作確認が先でした。真の原因究明までには至っておりませんが、プログラムとしてはご指導いただいた内容で問題ありませんでした。お騒がせし申し訳ありませんことと、適切なアドバイス頂戴しましたこと感謝申し上げます。解決済センサーを繋いだarduinoとのシリアル通信をCかC++で行いたいです。2エラーメッセージに納得がいかないです。頂いたご意見への回答は行っておりません。