TOPへ
特殊電子回路について

English
Loading
トップ ページ >  チュートリアル > 複数のシリアルを使う

複数のシリアルを使う

Arduino MEGAなどではSerial、Serial1、Serial2・・のようなインスタンスがあらかじめ用意されていて、

複数のシリアルを同時に使うことができますが、MEGAのインスタンスはポートが固定なので、

本当に同じような仕様でいいのかと悩んでしまい、その機能は実装できていません。

現状のライブラリで複数のシリアルを同時に使うには、tkdn_sciというより低レベルなAPIを使うことになります。

次回か次々回のライブラリ更新時にはC++のSerialクラスを使ってアクセスできるようにします。

以下のプログラムはRaXinoをUSBシリアル変換アダプタ化するものです。

USBから受信したデータをSCI0から出力します。

#include <tkdn_hal.h>
 
typedef struct sci_str
{
 char     rxbuf[SCI_BUFSIZE];
 char     txbuf[SCI_BUFSIZE];
 int      tx_rptr;
 int      tx_wptr;
 int      rx_rptr;
 int      rx_wptr;
 SCI_PORT port;
 CRLFMODE crlf_tx;
 CRLFMODE crlf_rx;
} sci_str;
 
 
int main()
{
 sci_str sci1,sci2;
 sci_init_ex(&sci1,SCI_USB0,115200);
 sci_init_ex(&sci2,SCI_SCI0P2x,115200);
 
 while(1)
 {
  if(sci_rxcount_ex(&sci1))
  {
   sci_putc_ex(&sci2, sci_getc_ex(&sci1));
  }
  if(sci_rxcount_ex(&sci2))
  {
   sci_putc_ex(&sci1, sci_getc_ex(&sci2));
  }
 }
}