相手端末の出力を変更:コマンド 0x80
相手端末の出力をUARTコマンドでコントロールする機能です。
デジタル入力やPWM入力の代わりにUART入力で相手側のデジタル出力やPWM出力が変化します。TWELITE DIPの外部に接続したマイコン等で相手端末の出力を制御することができます。
データフォーマット
1: 1バイト : 宛先アドレス(論理デバイスID) (0x00: 親機, 0x01 ~ 0x64: 子機ID指定, 0x78: 全子機)
親機から子機、または子機から親機への伝送に限ります。
2: 1バイト : コマンド番号 (0x80 固定)
3: 1バイト : 書式バージョン (0x01 固定, 将来のための拡張)
4: 1バイト : IO状態
b7..b3b2b1b0とした場合 b0/b1/b2/b3 が DO1/DO2/DO3/DO4)の設定値となり、0がHi、1がLoとなります。設定を有効化するために、続く IO状
態マスクのビットがを1に設定します。
5: 1バイト : IO状態設定マスク
b7..b3b2b1b0とした場合 b0/b1/b2/b3 が DO1/DO2/DO3/DO4)の設定値となり、0で対応するDOを設定しない、1で設定します。
6: 2バイト : PWM1の設定値
0(0%)~1024(100%)または0xFFFF(設定しない)を与えます。
7: 2バイト : PWM2の設定値
8: 2バイト : PWM3の設定値
9: 2バイト : PWM4の設定値
10:1バイト : チェックサム
操作例1(パソコンからLEDをオンオフする。)
初級編で行った「無線リモコンでLEDをオンオフする。」の親機のスイッチをオンオフする代わりにパソコンにコマンドを入力して子機のLEDをオンオフしてみましょう。
ターミナルソフトウエアに以下のコマンド列を入力することによりLEDを制御できます。 コマンドは先頭文字がコロン(:)で終端はCR(0x0D),LF(0x0A)です。子機の論理デバイスIDが78(初期設定値)の例です。相手が親機の場合は00に、論理デバイスIDを変更している場合は78の代わりに設定した値を入力して下さい。
LEDをオンにする
:7880010F0F0000000000000000E9 (DO1、DO2、DO3、DO4全てをオンにする)
:7880010101000000000000000005 (DO1のみを制御対象にしてオンにする)
:78800104040000000000000000FF (DO3のみを制御対象にしてオンにする)
:78800105050000000000000000FD (DO1、DO3のみを制御対象にしてオンにする)
LEDをオフにする
:788001000F0000000000000000F8 (DO1、DO2、DO3、DO4全てをオフにする)
:7880010001000000000000000006 (DO1のみを制御対象にしてオフにする)
:7880010004000000000000000003 (DO3のみを制御対象にしてオフにする)
:7880010005000000000000000002 (DO1、DO3のみを制御対象にしてオフにする)
操作例(パソコンからLEDの明るさを変える。)
初級編で行った「無線リモコンでLEDの明るさを変える。」の親機の可変抵抗器を操作する代わりにパソコンにコマンドを入力してLEDの明るさを変えてみましょう。
LEDの明るさを変える
:7880010000000000000000000007 (PWM1、PWM2、PWM3、PWM4全てを最小値0にする)
:78800100000400040004000400F7 (PWM1、PWM2、PWM3、PWM4を最大値1024にする)
:78800100000400FFFFFFFFFFFF09 (PWM1のみを制御対象にして出力を最大値1024にする)
:7880010000FFFF0400FFFFFFFF09 (PWM2のみを制御対象にして出力を最大値1024にする)
:7880010000FFFFFFFF0400FFFF09 (PWM4のみを制御対象にして出力を最大値1024にする)
:7880010000FFFFFFFFFFFF040009 (PWM1のみを制御対象にして出力を最大値1024にする)
操作例2
論理デバイスIDが0x78の子機の全てのデジタル出力(DO)をLOに設定し、PWMのDUTY比を0x380、0x300、0x280、0x200に設定します。
チェックサムの計算
チェックサムとは受け取ったデータが正しいかどうかを確認するための付加データです。
データ部の各バイトの和を8ビット幅で計算し2の補数をとります。つまりデータ部の各バイトの総和+チェックサムバイトを8ビット幅で計算すると0になります。
チェックサムバイトをアスキー文字列2文字で表現します。
例えば 00A01301FF123456 では 0x00 + 0xA0 + ... + 0x56 = 0x4F となり、この二の補数は0xB1 です。(つまり 0x4F + 0xB1 = 0)
チェックサムの省略
チェックサムを省略し替わりに X を入力できます。
例 :780100112233X