Skip to content

Samples_UART

Ko-ichiro Sugiyama edited this page May 28, 2023 · 14 revisions

はじめに

UART クラスのメソッドについては,Class_UART を参照されたい.

UART の基礎

UART は非同期のシリアル通信である. 非同期のためにクロック用のラインは存在しない.

  • 2 本の信号線で構成される (全二重通信)
    • TX: データ出力
    • RX: データ入力
  • クロック同期式と比べて伝送速度は低速 (最大 20 kbps)
  • UART にはクロック信号がないため, 通信をする前に送受信するデバイス間で通信速度 (ボーレート) を決める必要がある.

image

GPS

GPS GYSFDMAXB:https://akizukidenshi.com/catalog/g/gM-09990/

GPS の使い方の詳細は以下を参照のこと

サンプル (1)

# GPSの電源を入れる (高専ボードの場合に必要)
gps_pw = GPIO.new(5, GPIO::OUT)
gps_pw.write(0)

# GPS初期化 txPin = 17, rxPin = 16 のため uart_num = 2 とする
gps = UART.new(2, 9600)

# 出力を RMS のみに
sleep 1
gps.write("$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n")

## 出力をデフォルトに戻すときは以下をコメントアウトすること.
## sleep 1
##gps.write("$PMTK314,-1*04\r\n")

# データの到着まで少し待つ
sleep 2

# read メソッドで 100 バイト分のデータを受け取る
# 指定したバイト数分のデータを受け取れない場合は nill が返る
puts "> gps.read"
p gps.read(100)

# 入力データをclear_tx_bufferで消去する
puts "> gps.clear_tx_buffer"
gps.clear_tx_buffer

# データの到着まで少し待つ
sleep 2

# 4096バイトのデータはないが、
# nonblockのため到着している分のデータが表示される
puts "> gps.read_nonblock(4096)"
puts gps.read_nonblock(4096)

# 入力データをclear_tx_bufferで消去する
puts "> gps.clear_tx_buffer"
gps.clear_tx_buffer

# こちらは消去されているため何も表示されない
puts "> gps.read_nonblock(4096)"
puts gps.read_nonblock(4096)

# 以下、到着したデータを 1 行ずつ読み込んで表示
puts "> gps.gets"
while true
  puts  gps.gets()
  sleep 1
end
Clone this wiki locally