
Linuxでのシリアル通信についてですが、受信のときにデータがずれた状態で送られてくることがあります。
例えば、正常なデータが以下のような場合
rtc[0] = 7
rtc[1] = 83
rtc[2] = 0
rtc[3] = 4
rtc[4] = 5
略
たまに
rtc[0] = 0
rtc[1] = 7
rtc[2] = 83
rtc[3] = 0
rtc[4] = 4
略
rtc[0] = 0
rtc[1] = 0
rtc[2] = 7
rtc[3] = 83
rtc[4] = 0
略
rtc[0] = 83
rtc[1] = 0
rtc[2] = 4
rtc[3] = 5
rtc[4] = 0
略
といった結果になります。
プログラムでは、7バイト分読み込む場合は
unsigned char buff[7];
・
・
・
int r = read(fd, buff, 7);
と書いています。何か問題があるでしょうか。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
今時、シリアルポートの通信プログラムを書いている人がいるんですね、、懐かしいです。
データ化けしているわけでは無いのでビットレベルの同期はできているようです。
次に同期が必要になるのはブロック単位の同期ですが、これができていない状況です。
read() で読む際には期待する位置に格納(受信)されている保証はありません。
シリアル通信の場合は1バイトづつ読みながら目印になるバイト列が来たらそれからデータが始まると判断をする必要があります。
No.4
- 回答日時:
>int r = read(fd, buff, 7);
実行した時に受信バッファに5バイトしか入っていない場合にどういう挙動になるでしょう?
そして、貴方のコードはそういう場合にどういう挙動をするように記述しているでしょうか?
とりあえず、
man 2 read
してみるとか。
No.3
- 回答日時:
No.1 です。
曖昧性を排除します。
「Linuxでのシリアル通信」という言葉から無手順であることを前提に回答しています。
その場合、手順はプログラマに委ねられています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- USBメモリー・SDカード・フラッシュメモリー 銀行が振込データの受け渡しに未だにFDを使っている理由は「FDDがAドライブ固定だから」って本当? 11 2022/06/02 03:53
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- その他(データベース) 放送大学のデータベースの講義を、興味本位で見ていたら気になることがありました。 講師が、null を 5 2022/04/21 17:06
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- その他(SNS・コミュニケーションサービス) チャットアプリのダウンロードで個人情報流失することはないか 2 2023/07/28 02:53
- 写真・ビデオ チャットアプリのダウンロードで個人情報流失することはないか 2 2023/07/28 00:46
- UNIX・Linux Zabbix監視エージェントをインストールしてもデータを収集できずアクティブにならない 1 2023/02/26 20:25
- Wi-Fi・無線LAN iPhoneを一日中家のWi-Fiに接続して使ったのですが、データ通信を少し(0.05GB)使ってい 3 2023/07/03 21:39
- その他(SNS・コミュニケーションサービス) チャットアプリのダウンロードで個人情報流失することはないか 2 2023/07/28 11:41
- 事件・犯罪 酒酔い運転検挙 1 2022/04/20 22:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
SerialPortのDataReceivedイベ...
-
「スイッチングハブのバッファ...
-
ReadFileについて
-
WriteFile()でのデータ送信がで...
-
TCP/IP通信プログラミングにお...
-
TCPでの非同期型select関数につ...
-
write関数でEAGAINのエラー発生...
-
WaitForMultipleObjects関数の...
-
C#で通信処理。応答がない場合...
-
COMポートの同時オープン同時読...
-
waveIn、waveOutでの音声録音・...
-
シリアル通信 大きいサイズの...
-
ClearCommError呼び出し時のCE_...
-
Macターミナルで実行中のプログ...
-
家電製品の電力周波数を変える機械
-
VBSの処理中一旦処理を止めて再...
-
C言語で、メモリを解放しないで...
-
sendkeysにてALT+CTRL+INSERTを...
-
Excel VBAにて、2GB超の点群デ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
「スイッチングハブのバッファ...
-
winsockでソケット通信の開発を...
-
シリアル通信の出力バッファと...
-
WriteFile()でのデータ送信がで...
-
Linuxでのシリアル通信について...
-
WinsockAPIのrecvfromの受信デ...
-
socket: recvはいつ,どれだけ...
-
SerialPortのDataReceivedイベ...
-
ClearCommError呼び出し時のCE_...
-
TCPでの非同期型select関数につ...
-
シリアルポート通信
-
シリアル通信 大きいサイズの...
-
winsockの動作について。
-
ソケット通信内 read関数について
-
COMポートの同時オープン同時読...
-
SocketのSend関数でのCLOSEの検...
-
waveIn、waveOutでの音声録音・...
-
write関数でEAGAINのエラー発生...
-
rs232cでの受信データ(mscomm)...
おすすめ情報