Android
誕生から10年以上が経ち、Android
開発エンジニアという立場は隆盛から衰退の一途をたどり、巨額の資金を投じて純粋なUIのAndroid APPを開発しようとする企業は少ないのが現状です。 Android APP は、ゲームやモノのインターネット (モノのインターネット (略して IoT) など) です。モノのインターネットの世界では、シリアル通信は一般的な有線通信方式です。この記事では、Android
シリアル通信を再理解するためにシリアル通信に焦点を当てます。
目次
シリアル通信の概要
シリアル通信( )は、シリアルポートがバイトを1ビットずつ送受信する通信方式Serial Communications
( )です。bit
シリアルポートは、表示制御装置と信号処理基板との間の通信の主要なインターフェースであり、表示制御装置と他の機器間、および機器間のプロトコルデータフレームの通信および送信にも重要なインターフェースです。
シリアル通信の分類
シリアル通信は通信方式により串行通信
とに分けられます并行通信
。
シリアル通信
シリアル通信:双方がタイミングを守って少しずつ通信する通信方式。
シリアル通信は数据同步方式
、 、数据传输方式
、および再びに基づいて电气标准及协议
さまざまなカテゴリに分類できます。
データ同期方式に応じて分ける
- 同期通信
同期通信: 1 回の通信で、通常は複数のデータ文字を含む 1 フレームの情報のみが送信されます。データ形式はそれぞれ文字指向と文字指向ですbit
。 - 非同期通信
非同期通信:各キャラクタは、スタートビットとストップビットをキャラクタの開始マークと終了マークとして使用し、1キャラクタ単位で送受信します。データを非同期で送信する場合、通信する双方の当事者が文字形式と通信速度について合意する必要があります。
データ送信方式による
- シンプレックス
シンプレックス: 通信する 2 つの当事者のうち、一方が送信者として固定され、もう一方が受信者として固定されます。情報は単一の伝送線を使用して一方向にのみ送信できます。
- 半二重
半二重: 通信プロセス中はいつでも、A から B、B から A に情報を送信できますが、送信できるのは一方向のみです。
- 全二
重 全二重:双方向に同時にデータを送信できる通信であり、単信通信方式を 2 つ組み合わせた場合と同等の能力を持ちます。全二重とは、信号を両方向 (A→B および B→A) に同時に (瞬時に) 送信できることを意味します。A→BとB→Aを同時に行う、つまり瞬間同期を意味します。
電気規格およびプロトコルに従って分類
EIA-RS-232C
シリアル ポートは、、、、EIA-422
などEIA-485
の電気規格とプロトコルに従って分割されています。
- EIA-RS-232C
RS-232C
規格(プロトコル)の正式名称は規格であり、その定義は「EIA-RS-232C
データ端末装置(DTE
)とデータ通信装置( )DCE
の間のシリアルバイナリデータ交換インターフェースの技術規格」です。1970 年に電子工業会 () とベル システム、モデム メーカー、コンピュータ端末メーカーによってEIA
共同開発された全二重シリアル通信の規格です。たとえば、PC
マシン上のCOM1
インターフェイスはインターフェイスCOM2
です。RS-232C
詳細を参照: EIA-RS-232C
- EIA-422
EIA-422
(EIA-422 とも呼ばれますRS-422
) は、4 線式、全二重、差動伝送、およびマルチポイント通信を指定する一連のデータ伝送プロトコルです。イネーブルエンドの有無にかかわらず、単方向/非可逆伝送ラインを使用した平衡伝送を使用します。違いは、複数の送信者は許可されず、複数の受信者のみが許可されることEIA-485
です。EIA-422
ハードウェア構成的には、EIA-422
( )は 2 組の( )RS-422
に相当します。つまり、2 つの半二重()で全二重()が構成されます。EIA-485
RS-485
EIA-485
RS-485
RS-422
EIA-422
詳細を参照: EIA-422
- EIA-485
EIA-485
(以前はRS-485
ORRS485
として知られていました) は、2 線、半二重、平衡伝送線マルチポイント通信用の OSI モデルの物理層の電気的特性を指定する規格です。これは、電気通信産業協会 (TIA
) と電子産業同盟 ( ) がEIA
共同で発行した規格です。この規格を実装したデジタル通信ネットワークは、電子ノイズのある環境でも長距離にわたって効率的に通信できます。線形マルチポイント バス構成では、ネットワーク上に複数の受信機が存在する可能性があります。したがって、産業環境での使用に適しています。
詳細を参照: EIA-485
パラレル通信
byte
パラレル通信:バイト( )またはバイト( )の倍数をbyte
伝送単位とし、同時にパラレル回線を介して伝送することを指し、これによりデータ伝送速度は大幅に向上しますが、パラレル伝送路の長さが長くなります。長さが長くなると干渉が発生し、データが誤りやすくなるため、並列通信は長距離のデータ伝送には適しません。例: プリンター ポート、IDE ポートなど。
シリアル通信の概要図
シリアル通信の使用
開発者として
Android
、シリアル ポートに関連する多くのことを理解する必要はありません。基本的には、シリアル ポートへの接続方法のみに集中する必要があります。シリアル ポート通信の原理などを理解する必要があるのは、ハードウェア開発エンジニアだけかもしれません。関連する知識。
使用する前に、ローカルでGithub clone
プロジェクトAndroidSerialPortlib_serialport
に移動し、モジュールをプロジェクトにコピーします。
次に、シリアル ポート接続に必要なパラメータを設定します。
- シリアルポート: シリアル通信プロトコルに使用されるインターフェース。
- ボーレート (
Baud rate
): 1 単位時間に送信されるシンボルの数。たとえば、ボーレート 9600 は、1 秒あたり 9600 バイト、または 1 ミリ秒あたり 9.6 バイトを送信することを意味します。 - データ ビット: 送信されるメッセージの長さに応じて、コンピューターによって送信される情報のパケット。
- チェック ビット: パリティ ビットとも呼ばれ、コード送信の正しさを検証するための検証方法です。
- ストップ ビット: クロック同期を修正する機会を提供し、送信の終了を示すために使用されます。
- フロー制御: データ送信のプロセスを制御して、送信側と受信側の速度を一致させ、データの損失を防ぎます。一般的に使用されるフロー制御には、ハードウェア フロー制御とソフトウェア フロー制御があります。一般的に使用されるハードウェア フロー制御には、
RTS/CTS
フロー制御 (データ端末準備/データ設定準備) フロー制御が含まれ、一般的に使用されるソフトウェア フロー制御には、 が含まれますXON/XOFF
。
var mSerialPortHelper = SerialPortHelper()
// 配置串口号
mSerialPortHelper.port = ConfigManage.serialPort
// 配置波特率
mSerialPortHelper.baudRate = ConfigManage.baudRate.toInt()
// 配置数据位
mSerialPortHelper.dataBits = ConfigManage.dataBits.toInt()
// 配置校验位
mSerialPortHelper.parity = SerialPortDataManage.parity[ConfigManage.parity]!!.toInt()
// 配置停止位
mSerialPortHelper.stopBits = ConfigManage.stopBits.toInt()
// 配置流控
mSerialPortHelper.flowCon = SerialPortDataManage.flow_bits[ConfigManage.flowBits]!!.toInt()
// 监听串口数据的传输
mSerialPortHelper.setISerialPortDataListener(object : ISerialPortDataListener {
override fun onDataReceived(bytes: ByteArray?) {
byteToHex(1, bytes)
}
override fun onDataSend(bytes: ByteArray?) {
byteToHex(0, bytes)
}
})
// 打开串口
mSerialPortHelper.open()
最終的な効果:
参考資料
1. 【シリアル通信】検討ノート
2.通信方式の分類(シリアル通信とパラレル通信)