COSMOS03の日記

日記をつける代わりにブログに書いています。

VISA通信のボーレートを変更する

VISAを使ったシリアル通信を試していますが、今回はボーレートの変更です。

 

シリアルポートをオープンする処理の記述が以下のとおり。C#で記述です。

try
{
mbSession = (MessageBasedSession)rmSession.Open(sr.ResourceName);
}
catch (InvalidCastException)
{
MessageBox.Show("Resource must be a message-based session");
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}

 

オープンしたセッションで使われているハードウェアインタフェースがなんであるかを知る必要があります。

mbSessionを見てみると、HardwareInterfaceTypeという値を持っているようです。

で、HardwareInterfaceTypeの取りうる値(enum)を調べると、GPIBやUSBと並んでSerialも定義されています。

Ivi.Visa.HardwareInterfaceType.Serialが欲しい値のようです。

 

書き換えたコードは以下のとおり。

try
{
mbSession = (MessageBasedSession)rmSession.Open(sr.ResourceName);
if ( mbSession.HardwareInterfaceType == Ivi.Visa.HardwareInterfaceType.Serial )
{
MessageBox.Show("Serial");
}
}

 

シリアルと判ったところで、ボーレートを変更する必要があります。

そこで、開いたセッションがシリアルセッションと判明しているので、シリアルセッションを扱う変数を使います。

mbSession = (MessageBasedSession)rmSession.Open(sr.ResourceName);
if ( mbSession.HardwareInterfaceType == Ivi.Visa.HardwareInterfaceType.Serial )
{
SerialSession ss = mbSession as Serial Session;
ss.BaudRate = 115200;
}

 

設定するボーレートも選びたいところですが、とりあえず変更できるか試してみます。

 

シリアルポートを選んでコマンドを送ってみます。

f:id:COSMOS03:20211215001117p:plain

今回も"*IDN?"と送りました。

 

10ビット分と思われる長さを測ってみると87usです。10ビット分で11.4943KHzと表示されていますから、1ビットあたりは114.943KHz。

115.2kbpsに変更が出来ているようです。

 

ちなみにC#は経験がありません。

自由にコードが書けるようにならないと時間が掛かります。。