マキシム >
設計サポート
> アプリケーションノート
>
[1-Wire®製品 ]
[マイクロコントローラ ]
キーワード: 1-Wire, OneWire, iButton, API, アプリケーションプログラムインタフェース, ソフトウェア, 例, TMEX, java, ジャバ, OWAPI, パブリックドメイン, PD, windows COM, ウィンドウズCOM, OWCOM
関連製品
APP 155: Aug 08, 2002
ダウンロード、PDFフォーマット (178kB)
アプリケーションノート 155
1-Wire®ソフトウェアリソースガイドデバイス解説
要約:マキシムが現在製造している1-Wire製品は、i Button®デバイスを含めて30以上あります。これらの製品と通信を行うための利用可能なAPI、ソフトウェア例、およびその他のリソースを入手したり、ある特定のデバイス用に適当なリソースを見つけるのは大変な作業になることがあります。このアプリケーションノートは、入手可能なリソースと選択ガイドの概要を提供します。最新の1-Wire製品もまた、製品説明とファミリコード早見表のある便利な表で紹介されています。
入手可能なAPIには、TMEX (Microsoft Windows®用API)、1-Wireパブリックドメインキット(クロスプラットフォームAPI)、およびJava™ (OWAPI)用1-Wire APIやそのバリエーション.NET (OW.NET)用1-Wire API、および.NET Compact (OW.NET.Compact)用1-Wire APIなどがあります。このアプリケーションノートにあるAPIはすべて制限なく自由に使用することが可能で、多くの場合完全なソースコードが含まれています。
はじめに
マキシムが現在製造中の1-Wireデバイスは、i Buttonデバイスなどを含めて30点を超えます。利用可能なアプリケーションプログラムインタフェース(API)、ソフトウェア事例、およびこの一連の素子と通信する他のリソース、あるいは単一のデバイスタイプ用の適切なリソースを突き止めるのは煩わしい場合があります。そこで、この解説書では、利用可能なリソースの概要と選択ガイドを提供します。この解説書に記載されたすべてのAPIは無制限に自由に利用することが可能で、ほとんどの場合ソースコード一式を備えています。
1-Wire の概要
1-Wireバスは、単一接続で1つのマスタと複数の周辺機器との双方向通信を実行するシンプルな信号方式です。全1-Wireバスデバイスが共有している高機能とは、チップやi Buttonのどのデバイスも他のデバイスと重複しない、工場で設定された登録番号を備えていることです。つまり、どのデバイスも他と重複しません。このため、同一バスワイヤに接続できる多数のデバイスの中から、どのデバイスでも個別に選び出すことができます。また、通信用に1本のワイヤを1台、2台、または数十台の1-Wireデバイスでも共有することができるため、バイナリ検索アルゴリズムを使って各デバイスを順次検出することができます。一度各デバイスの登録番号が判明すると、そのデバイスにアドレスするために登録番号を使い、どのデバイスも通信用に一意に選択することができます。
どの通信でも、最初はバス全体を同期させる「リセット」を送出するバスマスタが必要です。次にスレーブデバイスが以降の通信用に選択されます。これは、全スレーブを選択するか、特定のスレーブを選択するか(デバイスの登録番号によって)、またはバイナリ検索アルゴリズムを使用してバス上の次のスレーブを検出することによって実行することができます。こうしたコマンドは、「ネットワーク」機能または読取り専用メモリ(ROM)コマンドと総称されています。特定のデバイスが選択されると、その他のすべてのデバイスは脱落し、次のリセットが送出されるまで以降の通信を無視します。
また、あるデバイスがバス通信のために分離されると、マスタはそのデバイスに固有のコマンドを出したり、データを送信したり、またはそのデバイスからデータを読み込んだりすることができます。それぞれのデバイスタイプは、各種の機能を実行し各種の目的を果たすため、各デバイスタイプがいったん選択されるとそれぞれ固有のプロトコルを確保します。たとえ個々のデバイスタイプが異なったプロトコルと機能を備えていても、すべて同じ選択プロセスになり、図1 のようなコマンドフローにしたがいます。
図1. 標準的1-Wireの通信フロー
各スレーブにおける固有の登録番号の絶対必要な部分は、8ビットのファミリコードです。このコードは、各デバイスモデルに固有のコードです。各デバイスモデルは各種機能を実行しますので、デバイスの制御と信号を送るのに使用するプロトコルを選択するためにこのコードを使用します。マキシム1-Wire製品に対するファミリコードの割当てについては、表1 を参照してください。
表1. ファミリコード対照表
ファミリ コード
製品 () - i Buttonパッケージ
説明 (特に指定のない限りメモリのサイズはビットで表記)
01 (16進)
(DS1990A), (DS1990R), DS2401, DS2411
1-Wireネットアドレス(登録番号)のみ
02
(DS1991)¹
Multikey i Button、1152ビットの安全なメモリ
04
(DS1994), DS2404
4Kb NV RAMメモリとクロック、タイマ、アラーム
05
DS2405¹
単一のアドレス可能なスイッチ
06
(DS1993)
4Kb NV RAMメモリ
08
(DS1992)
1Kb NV RAMメモリ
09
(DS1982), DS2502
1Kb EPROMメモリ
0A
(DS1995)
16Kb NV RAMメモリ
0B
(DS1985), DS2505
16Kb EPROMメモリ
0C
(DS1996)
64Kb NV RAMメモリ
0F
(DS1986), DS2506
64Kb EPROMメモリ
10
(DS1920)
警報発生付き温度
12
DS2406, DS2407¹
1Kb EPROMメモリ、2チャネルアドレス可能スイッチ
14
(DS1971), DS2430A¹
256ビットEEPROMメモリと64ビットOTPレジスタ
1A
(DS1963L)¹
書込みサイクルカウンタ付き4Kb NV RAMメモリ
1C
DS28E04-100
4096ビットEEPROMメモリ、2チャネルアドレス可能スイッチ
1D
DS2423¹
外部カウンタ付き4Kb NV RAMメモリ
1F
DS2409¹
サブネット用2チャネルアドレス可能カプラ
20
DS2450
4チャネルA/Dコンバータ(ADC)
21
(DS1921G), (DS1921H), (DS1921Z)
Thermochron®温度ロガー
23
(DS1973), DS2433
4Kb EEPROMメモリ
24
(DS1904), DS2415
リアルタイムクロック(RTC)
27
DS2417
割込み付きRTC
29
DS2408
8チャネルアドレス可能スイッチ
2C
DS2890¹
単一チャネルのディジタルポテンショメータ
2D
(DS1972), DS2431
1024ビット、1-Wire EEPROM
37
(DS1977)
パスワードで保護された32KB (バイト) EEPROM
3A
(DS2413)
2チャネルのアドレス可能スイッチ
41
(DS1922L), (DS1922T), (DS1923), DS2422
高容量のThermochron (温度)とHygrochron™ (湿度)のロガー
42
DS28EA00
シーケンス検出およびPIO付きプログラマブル分解能ディジタル温度計
43
DS28EC20
20Kb 1-Wire EEPROM
*このリストには、マキシムの1-Wireデバイスの全タイプ(ファミリ)が含まれているわけではなく、Automatic Information Business Unit (BU)のソフトウェアライブラリがサポートしている一つのディレクトリに過ぎません。
¹これらのデバイスは新規設計用に推奨されていません。
APIの基礎
1-Wireデバイスとの通信用の各種アプリケーションプログラムインタフェース(API)は、プロトコルに起因する基礎的な通信課題に対応する共通の機能を備えています。図2 は、各種APIの機能を共通グループ化したものを概説しています。ほとんどの1-Wireデバイスはメモリを装備しているため、メモリI/O機能は全デバイスに該当しなくても、共通APIグループとして取り扱われます。すべてのメモリ以外のその他の特殊機能は、デバイス固有のデバイスグループに一括されます。
セッション
1-Wireバスの排他的使用をネゴシエート。 これは、複数のプロセスやスレッドが同じ1-Wireバスに同時にアクセスしようとするオペレーティングシステムや環境では特に重要となります。割込み禁止の単一デバイス上で複数の操作を実行する際には、ネットワークの排他的使用が必要です。
リンク
根源となる1-Wireバス通信機能。 すべての1-Wire通信は、全デバイスと読取り/書込みビットをリセットする「リセット」に凝縮することができます。また、このグループは、特別なEPROMプログラミングパルスまたは電力を供給するときのバスの電気的特性を設定する機能を含めることもできます。
ネットワーク
デバイス検出および選択用のネットワーク機能。 各1-Wireデバイスに設定されている固有の登録番号は、各デバイスのネットワークアドレスとして使用されます。この機能はLINKレベル機能で構成されています。登録番号は読取り専用メモリ(Read-Only Memory)であるため、1-Wireデバイスのデータシートではこの機能をROMコマンドと呼んでいます。一部の1-Wireマスタは、リンク機能よりも効果的なネットワーク機能を内蔵しています。
転送
ブロック通信および基礎的な読取り/書込みメモリ機能。 パケットの読取り/書込みメモリ機能を含めることもできます。これらの機能は、「ネットワーク」と「リンク」のグループ機能で構成されています。
ファイル
1-Wireファイル構造を使用したファイルメモリレベル機能(アプリケーションノート114 「1-Wire File Structure (1-Wireファイル構造) 」を参照)。これらの機能は、「ネットワーク」と「転送」のレベル機能で構成されており、1ページ以上のメモリを備えたデバイスにのみ有効です。
デバイス
デバイス固有の「ハイレベル」機能。多くの場合、これらの機能は、「ネットワーク」、「転送」、および「リンク」のグループ機能で構成され、温度の読取りやスイッチ状態の設定などの操作を実行します。
図2. API機能グループ
これらの機能を使用するための標準的な手順は、図3 に概説されています。「セッション」機能はデバイスへの通信呼び出しを包括し、これは通常、メモリまたは「デバイス」固有の操作の前に来る「ネットワーク」機能を利用することになります。
図3. APIの使用法フロー
i Button通信の特質は、本質的に「接触」です。これは、デバイスとの接触が常に信頼性があるとは限らないことを意味します。i Buttonはリーダに挿入され、読取り時に断続的な接触が生じることがあります。したがって、エラーリカバリに関して一貫した方式を厳格に守る必要があります。これは通常、データ通信でスプリアスエラーが検出されたときに再試行を行うこと、およびCRCチェックを利用することを必要とします。APIのファイルI/O機能は、アプリケーションノート114 「1-Wire File Structure (1-Wireファイル構造) 」の箇所に詳述されている標準ファイル構造を使用します。この構造は、読取り中のデータの妥当性を迅速に検証するために、データの全ページでCRC16を使用します。たいていの1-Wire API機能には、自動再試行機能が全くないか少ししかありません。再試行は、アプリケーションが制御します。1-Wire通信実行時のエラー回復とリスク評価の方法については、アプリケーションノート159 「i Button®アプリケーションで堅牢な1-Wire®通信を実現するためのソフトウェア手法 」を参照してください。
APIの選択
このアプリケーションノートでは、主として5種類のAPIを取り上げています。これらのAPIは各種プラットフォームで動作し、各種言語を使用し、また各種機能を備えています。表2 は5種類のAPIを簡単な説明付きで紹介しており、また表3 は、言語で分類された利用可能なAPIをオペレーティングシステムに割り当てています。
表2. APIの概要
API
省略形
概要
1-Wireパブリックドメイン
PD
Cで記述された完全なオープンソースのパブリックドメインAPIであり、多数のPCオペレーティングシステム、ハンドヘルドオペレーティングシステム、およびマイクロコントローラのプラットフォーム間で移植することができるように設計されています。PCプラットフォームの場合、32ビットMicrosoft Windows上でネイティブドライバのライブラリを通じてすべての1-Wireアダプタ(マスタ)をサポートしており、またクロスプラットフォームライブラリを使用する他のPCオペレーティングシステム上では、特定の1-Wireアダプタ(DS9097UシリアルアダプタやDS9490 USBアダプタ)をサポートしています。
Java用1-Wire API
OWAPI
ほぼすべての1-Wireデバイスをサポートする完全なオープンソースの高レベルJava API。本来の1-Wireマスタのサポートに加えて、クロスプラットフォームライブラリを通じて、DS9097UシリアルアダプタとDS9490 USBアダプタもサポートしています。
.NET用1-Wire API
OW.NET
Microsoft .NETフレームワーク用のJ#でコンパイルしたOWAPIコードベース。
.NET Compact用1-Wire API
OW.NET.Compact
Microsoft Visual J#®再頒布可能パッケージを備えていないWindows CEマシンまたはプラットフォーム用Compact .NET Framework。現在、C#に移植された低レベル1-Wireリンクおよびネットワーク層のみで構成されています。
TMEX API
TMEX
Windowsプラットフォーム(32および64ビット)で1-Wireマスタアダプタをすべてサポートしています。リンクおよびファイルI/O機能を提供していますが、デバイス機能は提供していません。ドライバはクローズドソースです。このAPIは、すべての1-Wireアダプタタイプにアクセスできるように他のAPIによって呼び出されます。
表3. APIのオペレーティングシステムおよび言語の適用範囲
Language
TMEX /OW.NET/OW.NET.Compact (Microsoft Windows language independent)
C
Java
OS
Windows Vista®
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows Vista x64
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows XP
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows XP x64
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows 2008
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows 2008 x64
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows 2000¹
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows ME¹
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows 98¹
TMEX /OW.NET/OW.NET.Compact
PD
OWAPI
Windows 95¹
TMEX
PD
OWAPI
Win3.1¹
TMEX
PD
DOS¹
TMEX
PD
Pocket PC/CE
OW.NET.Compact
PD
Linux® and other UNIX®-based OSs
PD
OWAPI
TINI *
PD - without TINI OS
OWAPI
*TINI ®は、マキシムが開発したJavaベースのOSを備えた組み込みプラットフォームです。
¹サポートされていませんが、旧ドライバのダウンロードはマキシムのウェブサイトから入手可能です。
各デバイスファミリのサポートは、APIによっても異なります。表4 は、各APIで利用可能なサポートを示すフラグとともに、現在利用可能な1-Wireデバイスをすべて紹介しています。表4のフラグに対する「要点」は、表の下部にあります。濃淡の影がないデバイス欄は、APIによって完全サポートされることに留意してください。淡い影付きの欄は部分的サポートで、濃い影付きの欄は最小限のサポートを示しています。
表4. デバイス別APIサポート
Device
FC
Description
TMEX
PD
OWAPI
OW.NET
OW.NET Compact
DS1982
09
1Kb EPROM memory
ABCE
ABCDE
ABCDE
ABCDE
AB
DS1985
0B
16Kb EPROM memory
ABCE
ABCDE
ABCDE
ABCDE
AB
DS1986
0F
64Kb EPROM memory
ABCE
ABCDE
ABCDE
ABCDE
AB
DS1904
24
RTC
AB
AB
ABI
ABI
AB
DS1920
10
Temperature and alarm trips
AB
ABI
ABCI
ABCI
AB
DS1921G DS1921H DS1921Z
21
Thermochron temperature logger
ABDE
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS1922L DS1922T DS1923
41
High-capacity Thermochron (temperature) and/or Hygrochron (humidity) loggers
AB
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS1963L¹
1A
4Kb NV RAM memory with write-cycle counters
ABDE
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS1971
14
256-bit EEPROM memory and 64-bit OTP register
ABD
ABCDI
ABCDI
ABCDI
AB
DS1972
2D
1024-bit EEPROM memory
AB
ABCDEI
ABCDEF GHI
ABCDEF GHI
DS1973
23
4Kb EEPROM memory
ABDE
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS1977
37
Password-protected 32KB (bytes) EEPROM
AB
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS1990A DS1990R
01
1-Wire address only
AB
AB
AB
AB
AB
DS1991¹
02
Multikey i Button, 1152-bit secure memory
AB
ABC
ABC
ABC
AB
DS1992
08
1Kb NV RAM memory
ABDE
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS1993
06
4Kb NV RAM memory
ABDE
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS1994¹
04
4Kb NV RAM memory and clock, timer, alarms
ABDE
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS1995
0A
16Kb NV RAM memory
ABDE
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS1996
0C
64Kb NV RAM memory
ABDE
ABCDE
ABCDEF GH
ABCDEF GH
AB
DS2401
01
1-Wire address only
AB
AB
AB
AB
AB
DS2405¹
05
Single switch
AB
ABI
ABI
ABI
AB
DS2404¹
04
4Kb NV RAM memory and clock, timer, alarms
ABDE
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS2406 DS2407¹
12
1Kb EPROM memory, 2-channel addressable switch
ABCE
ABCDEI
ABCDEI
ABCDEI
AB
DS2408
29
8-channel addressable switch
AB
ABI
ABI
ABI
AB
DS2409¹
1F
Dual switch, coupler
AB
ABI
ABI
ABI
AB
DS2411
01
1-Wire address only
AB
AB
AB
AB
AB
DS2413
3A
Dual-channel addressable switch
AB
ABI
ABI
ABI
AB
DS2415
24
RTC
AB
AB
ABI
ABI
AB
DS2417
27
RTC with interrupt
AB
AB
ABI
ABI
AB
DS2422
41
High-capacity Thermochron (temperature)/Hygrochron (humidity) logger
AB
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS2423¹
1D
4Kb NV RAM memory with external counters
ABDE
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS2430A¹
14
256-bit EEPROM memory and 64-bit OTP register
ABD
ABCDI
ABCDI
ABCDI
AB
DS2431
2D
1024-bit EEPROM memory
AB
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS2450
20
Quad ADC
AB
ABI
ABI
ABI
AB
DS2502
09
1Kb EPROM memory
ABCE
ABCDE
ABCDE
ABCDE
AB
DS2505
0B
16Kb EPROM memory
ABCE
ABCDE
ABCDE
ABCDE
AB
DS2506
0F
64Kb EPROM memory
ABCE
ABCDE
ABCDE
ABCDE
AB
DS2890¹
2C
Single-channel digital potentiometer
AB
AB
ABI
ABI
AB
DS28E04-100
1C
4096-bit EEPROM memory, two-channel addressable switch
AB
ABCDEI
ABCDEF GHI
ABCDEF GHI
AB
DS28EA00
42
Programmable-resolution digital thermometer with sequence detect and PIO
AB
AB
AB
AB
AB
DS28EC20
43
20Kb EEPROM
AB
AB
AB
AB
AB
欄の濃淡別サポート
サポートのフラグ
完全サポート
A. 1-Wire リンクの基本サポート
B. 1-Wire ネットワークのサポート
C. 転送メモリバイトの読取り/書込みサポート
D. 転送メモリパケットの読取り/書込みサポート
E. 1-Wire ファイル構造タイプAAのサポート(ファイル構造タイプについては、アプリケーションノート114 「1-Wire File Structure (1-Wireファイル構造) 」を参照)
F. 1-Wire ファイル構造タイプABのサポート
G. 1-Wire ファイル構造タイプBAのサポート
H. 1-Wire ファイル構造タイプBBのサポート
I. その他のデバイス固有のサポート
部分サポート
最小サポート
¹これらの製品は新規設計用に推奨されていません。
1-Wire パブリックドメイン(PD)の概要
1-Wire PD APIで提供される機能は「C」で完全記述され、TMEX APIでサポートされていないプラットフォームでの使用を目的としています。「1-Wireネット」(またはMicroLAN™)は、1つのマスタと1つ以上のスレーブデバイスを備える一本の配線とグランドのネットワークです。このAPIはスレーブデバイスを識別し、スレーブデバイスと通信することが可能な1-Wireマスタを創造します。また、i Buttonを含めたすべての1-Wireデバイスと通信するように、あらゆる1-Wire、転送、およびファイルレベルサービスを提供します。このAPIキットおよびプラットフォームの構築(ビルド)例 は、i Buttonのウェブサイトにあります。
このAPIの「C」ソースコードは、移植することができるように設計されています。特定プラットフォームを完成するための「TODO (要実行事項)」テンプレートが提供されています。Windows 64ビット、Windows 32ビット、およびLinuxなどを含めた複数のプラットフォームの実装例が提供されています。また、こうしたプラットフォーム実装を使用する複数のアプリケーション例もあります。
「general」、「userial」、および「other」などの3つの移植可能なソースファイルのセットがあります。1つ目のセットは汎用的なもので、基本的なリンクの1-Wire通信機能(general)をすでに備えているプラットフォームを対象にしています。これは、ハードウェアに依存する最小レベルのセットです。移植可能なソースファイルの2つ目のセットは、ユーザがシリアルポート(RS232)を備え、「Universal Serial 1-Wire Line Driver Master: DS2480B」 (userial)の利用を望んでいるものと想定しています。このチップはシリアルポートに対するコマンドを受け、1-Wireオペレーションを実行し、その結果をシリアルポートに返送します。ソースコードは、目的の1-Wire操作をDS2480Bへのシリアル通信パケットに変換します。プラットフォームに提供する必要があるモジュールは、シリアルポートの読取り/書込みの基本モジュールだけです。DS2480Bは、すべてのDS9097Uシリーズのシリアルアダプタに使用されているインタフェースチップです。最後に、移植可能なソースファイルの3つ目のセットは、特定の1-Wireアダプタ機能および又は、先の2つのカテゴリにはまったく入らないもの(other)を取り扱っています。この一例として、USBポートを取り扱う例があり、具体的には、USBと1-Wire間のブリッジチップDS2490を利用します。多くの面で、これはgeneralのビルドと似ていますが、DS2490の特異性に合わせて修正されています。いずれのファイルセット(general、userial、またはother)を使用する場合でも、最終的には、同じAPIが実際にソフトウェア開発者に対して公開されます。
特に、このアプリケーションノートでは、1-Wireパブリックドメインキット (「other」ビルドに分類される)の、オープンソース型クロスプラットフォームのlibusbビルドについても取り上げています。libusbは、多くの種類のOSに移植されているオープンソースのUSBライブラリです。この特別な1-Wire PD APIのビルドは、その後1-Wire PD APIを構築するのに必要となるlibusb関数にコンパイルされます。
利用可能なさまざまなファイルセットについては、以下の表を参照してください。これはすでに表に示した各プラットフォーム用にビルドされたものであり、ダウンロード して入手可能です。
表5. 1-Wireファイルセットと事前にビルドされたバイナリ
移植可能なソースファイルのセット(ビルド)
プラットフォーム
ポート
説明
userial
Win64、Win32、Linux、(その他のUNIX)、DS550
COM
DS9097U 1-Wireシリアルポートアダプタとその他のDS2480Bベースのソリューションをサポートしています(組み込みを含む)。
general
Win64、Win32
LPT
LPTビルドは、Windows上でDS1410E¹パラレルポートアダプタをサポートしています。
DS550
マイクロプロセッサ(µP)のポートピン
DS550のgeneralビルドは、µPのポートピンを使用しています。
other 'libusb'
Win64、Win32、Linux、Macintosh、(その他のUNIX)
USB
DS9490 USB 1-Wireアダプタと、特に適切なlibusbドライバをインストール済みのその他のDS2490ベースのUSBソリューションをすべてサポートしています。
other 'WinUsb'
Win64、Win32
USB
DS9490 USB 1-Wireアダプタと、WinUSBデバイスドライバを特別に装備したWindows下で、その他のDS2490ベースのUSBアダプタをすべてサポートしています。
other 'wrapper' (TMEX)
Win32
USB、COM、LPT
TMEX APIを包括し、これによって、Windowsの下でマルチポートをサポートするようにします(それぞれDS9490、DS9097U、DS1410E¹)。
other 'multiport'
Win64、Win32
USB、COM、LPT
低レベルのネイティブWindowsドライバと直接通信することでマルチポートをサポートしています。
注:最新のプラットフォームのビルドについては、1-Wireパブリックドメインキット のウェブサイトを参照してください。
¹DS1410Eパラレルポートアダプタは新規設計用に推奨されていません。
移植可能なソースコードファイルのこれらのセットは、同じ1-Wire API機能を実装し、また互換性を持っています。図4 は、1-Wire PDコードベースのバージョン3.xx用の利用可能なAPIを紹介しています。非メモリデバイス固有の機能は多数存在するため、詳述していないことに注意してください。図4は、機能を提供するソースファイルと新規プラットフォームに必要なモジュールを対応付けています。
ダウンロードしたPDキット内の移植可能な「C」モジュールだけでなく、1-Wire通信を実行するための限定されたマイクロプロセッサ(µP)のアセンブリ例もあります。
このAPIのファイル機能は、アプリケーションノート114 「1-Wire File Structure (1-Wireファイル構造) 」の規定にある1-Wireファイル構造タイプ「AA」を実装しています。
このAPIの名前が示すように、提供されるソースコードは、できるだけパブリックドメインに近いライセンスを所持しています。開発者は、制限なく自由にこのコードを使用し、自らのアプリケーションに組み込むことができます。
セッション
owAcquire - 1-Wireネットを取得。
owRelease - 以前取得した1-Wireネットを開放。
リンク
owHasOverDrive - アダプタがオーバドライブ能力を備えているかどうかを指定。
owHasPowerDelivery - アダプタが電力を供給可能かどうかを指定。
owHasProgramPulse - EPROMプログラミング電圧が利用可能かどうかを指定。
owLevel - 1-WireネットラインレベルをNormal (5Vの弱プルアップ)、Power Delivery (5Vの強プルアップ)、またはProgram Level (12VのEPROMプログラミングレベル)に設定。
owProgramPulse - EPROM 1-Wireデバイスの書込み用に、時間設定されたプログラミングパルスを送信。
owReadBitPower - 1ビットを読み取り、電力を随意に供給。
owReadByte - オール1 (0xFF)を送信して、1-Wireネットから8ビットを受信。
owSpeed - 1-Wireネットの速度をNormal (16kb)またはOverdrive (142kb)に設定。
owTouchBit - 1-Wireネットで1ビットを送受信。
owTouchByte - 1-Wireネットで8ビットを送受信。
owTouchReset - 1-Wireネット上の全デバイスをリセットし、結果を返す。
owWriteByte - 1-Wireネットに8ビットを送信し、受信したエコーが一致していることを確認。
owWriteBytePower - 1-Wireネットに8ビットの通信を送信し、電力を供給。
ネットワーク
owAccess - 現行デバイスを選択し、デバイス固有のコマンドに対してデバイスを準備させる。
owFamilySearchSetup - 特定のファミリタイプを検出するために次の検索(owNext )を設定。
owFirst - 1-Wireネット上の「最初の」1-Wireデバイスを検出するために検索。
owNext - 1-Wireネット上の「次の」1-Wireデバイスを検出するために検索。
owOverdriveAccess - 現行デバイスを選択し、速度をOverdriveに設定。
owSerialNum - 現在選択中のデバイスの登録番号(ROM番号)を回収、または設定。
owSkipFamily - 最後の検索で検出されたファミリタイプの1-Wireデバイスをすべてスキップ。
owVerify - 現行デバイスを選択し、現行デバイスが存在していることを検証(警報発生はオプション)。
転送
owBlock - リセットはオプションで1-Wireネットに1データブロックを送受信。
owCanLockPage - 特定のメモリバンクにロック可能なページがあるかどうかを確認。
owCanLockRedirectPage - リダイレクトしないようにロック可能なページが特定のメモリバンクにあるかどうかを確認。
owGetAlternateName - 代替の部品番号や部品名を取得
owGetBankDescription - メモリバンクの文字列記述を取得。
owGetDescription - 1-Wireデバイスタイプの短い記述を取得。
owGetExtraInfoDesc - その他情報の内容に関する記述を取得。
owGetExtraInfoLength - このメモリバンク内のその他情報をバイトで表した長さを取得。
owGetMaxPacketDataLength - パケットのバイトで表した最大データ長を取得。
owGetName - 1-Wireデバイスの部品番号を文字列として取得。
owGetNumberBanks - 特定1-Wireファミリグループのメモリバンクの番号を取得。
owGetNumberPages - 特定メモリバンクのページ数を取得。
owGetPageLength - 特定メモリバンクの、バイトで表したロー(raw)ページ長を取得。
owGetSize - バイトで表した特定メモリバンクのサイズを取得。
owGetStartingAddress - 特定メモリバンクの物理開始アドレスを取得。
owHasExtraInfo - 読取り時にこのメモリバンクのページがその他情報を提供するかどうかを確認。
owHasPageAutoCRC - ページ読取り時にメモリバンクがデバイス生成CRC検査を備えているかどうかを確認。
owIsGeneralPurposeMemory - メモリバンクが汎用ユーザメモリであるかどうかを確認。
owIsNonvolatile - 現行メモリバンクが不揮発性であるかどうかを確認。
owIsReadOnly - メモリバンクが読取り専用であるかどうかを確認。
owIsReadWrite - メモリバンクが読取り/書込みであるかどうかを確認。
owIsWriteOnce - メモリバンクがEPROMなどのように追記型であるかどうかを確認。
owNeedsPowerDelivery - このメモリバンクが書込みに「電力供給」を必要とするかどうかを確認。
owNeedsProgramPulse - このメモリバンクが書込みに「プログラムパルス」を必要とするかどうかを確認。
owRead - ローモードでメモリバンクの一部を読み取る(パケット、CRCなし)。
owReadPage - ローモードでメモリバンクの1ページ全体を読み取る(パケット、CRCなし)。
owReadPageCRC - デバイス生成CRC検査付きのメモリバンクの1ページ全体を読み取る。
owReadPageExtra - 「その他」情報を含んだ、メモリバンクの1つのローページ全体を読み取る(パケット、CRCなし)。
owReadPageExtraCRC - 「その他」情報とデバイス生成CRC検査を含んだメモリバンクの1つのローページ全体を読み取る。
owReadPagePacket - メモリバンクの1ページからUniversal Data Packetを読み取る(Universal Data Packet構造の説明については、アプリケーションノート114 「1-Wire File Structure (1-Wireファイル構造) 」を参照)。
owReadPagePacketExtra - 「その他」情報付きのメモリバンクの1ページからUniversal Data Packetを読み取る。
owRedirectPage - メモリバンクが転送可能なページを備えているかどうかを確認。
owWrite - ローモードでメモリバンクの一部に書き込む。
owWritePagePacket - メモリバンクの1ページにUniversal Data Packetを書き込む。
ファイル
owAttribute - ファイルの属性を変更。
owChangeDirectory - 現在のディレクトリを変更。
owCloseFile - ファイルを閉じる。
owCreateDir - ディレクトリを作成。
owCreateFile - 書込み用にファイルを作成。
owCreateProgramJob - EPROMプログラミング保留ジョブのロギング用書込みバッファを作成。
owDeleteFile - ファイルを削除。
owDoProgramJob - 保留のEPROMプログラミングジョブを書き込む。
owFirstFile - 現在のディレクトリ内の最初のファイルを検出。
owFormat - 1-Wireファイル構造ファイルシステムをフォーマット。
owGetCurrentDir - 現在のディレクトリを取得。
owNextFile - 現在のディレクトリ内の次のファイルを検出。
owOpenFile - 読取り用にファイルを開く。
owReadFile - 開いたファイルを読み取る。
owReadFile - ファイルからデータを読み取る。
owRemoveDir - ディレクトリを削除。
owReNameFile - ファイル名を変更。
owWriteFile - 作成されたファイルに書き込む。
デバイス
DoAtoDConversion - DS2450でA/D変換を実行。
ReadSwitch12 - DS2406のスイッチ状態を読み取る。
readCounter - DS2423 1-Wireチップ上の特定のメモリページに関連するカウンタ値を読み取る。
... (以上のほかに、多数のデバイス固有の機能があります。)
図4. PD API機能
例1 は、図3で概説したAPIの使用法フローにしたがったPDコード部分を紹介しています。簡単にするために、ワークループを通過するごとに1-Wireネットワーク上の各デバイスを検出しています。より高度なアプリケーションであれば、1つのデバイスタイプだけを検出したり、以前の検索で検出されたデバイスを選択したりすることができます。
int rslt, portnum=0, doing_work=1;
char portString[50]; // set to platform appropriate port string
// work loop
while (doing_work)
{
// acquire the 1-Wire Net (SESSION)
if (owAcquire(portnum, portString))
{
// find all devices (NETWORK)
rslt = owFirst(portnum, TRUE, FALSE);
while (rslt)
{
// do SOMETHING with device found (TRANSPORT/FILE/DEVICE)
// . . .
// find the next device (NETWORK)
rslt = owNext(portnum, TRUE, FALSE);
}
// release the 1-Wire Net (SESSION)
owRelease(portnum);
}
else
{
// Could not acquire 1-Wire network
// . . .
}
// do other application work
// . . .
}
例1. PDコード例
図5a と図5b は、2組の1-Wire PDライブラリで各々構成されるC言語モジュールを列記しています。また、新規プラットフォームへのライブラリ移植のために提供すべき「TODO」機能も紹介しています。「TODO」機能を実装するプラットフォームリンクファイルの数例がキットで提供されています。
セッション
owsesu.c
リンク
owllu.c ds2480ut.c ds2480.h
ネットワーク
ownetu.c crcutil.c (コンパイルに必要)
転送
mbappreg.c
mbappreg.h
mbee.c
mbee.h
mbee77.c
mbee77.h
mbeewp.c
mbeewp.h
mbeprom.c
mbeprom.h
mbnv.c
mbnv.h
mbnvcrc.c
mbnvcrc.h
mbscr.c
mbscr.h
mbscrcrc.c
mbscrcrc.h
mbscree.c
mbscree.h
mbscrex.c
mbscrex.h
mbscrx77.c
mbscrx77.h
mbsha.c
mbsha.h
mbshaee.c
mbshaee.h
owtrnu.c
pw77.c
pw77.h
rawmem.c
rawmem.h
ファイル
owcache.c
owfile.c
owfile.h
owpgrw.c
owprgm.c
デバイス
ad26.c
ad26.h
atod20.c
atod26.c
atod26.h
cnt1d.c
humutil.c
humutil.h
jib96.c
jib96.h
jib96o.c
ps02.c
ps02.h
sha18.c
sha33.c
shadbtvm.c
shadebit.c
shaib.c
shaib.h
swt05.c
swt12.c
swt12.h
swt1c.c
swt1c.h
swt1f.c
swt29.c
swt29.h
swt3a.c
swt3a.h
temp10.c
thermo21.c
hermo21.h
time04.c
time04.h
weather.c
weather.h
その他ユーティリティ
ioutil.c
owerr.c
findtype.c
ownet.h
screenio.c
sprintf.c
crcutil.c
TODO (要実行事項)
以下の機能を実装するSERIALインタフェースモジュールを提供。
BreakCOM* - 最低2ms間、シリアルポート上に「BREAK」を送信。
CloseCOM - 以前開いたシリアルポートを閉じる(一部プラットフォームではオプション)。
FlushCOM* - 保留中の書込み操作を完了させ、入力バッファをクリアする。
msDelay* - 指定のミリ秒以上遅延させる。
msGettick - 増分ミリ秒カウンタを返す(一部の例ではオプション)。
OpenCOM - 通信用の指定シリアルポートを開く(一部プラットフォームではオプション)。
ReadCOM* - シリアルポートから指定数のバイトを読み取る。
SetCOMBaud - シリアルBAUD速度を指定速度に変更(オーバドライブはオプション)。
WriteCOM* - シリアルポートに指定数のバイトを書き込む。
*基本操作に最低限必要な機能。
図5a. PD 「USERIAL」の実装
セッション
(TODO参照)
リンク
(TODO参照)
ネットワーク
ownet.c crcutil.c (コンパイルに必要)
転送
「owtrnu.c」が「owtran.c」に置き換えられる以外は、USERIALの実装と同じ。
ファイル
USERIALの実装と同じ。
デバイス
USERIALの実装と同じ。
その他ユーティリティ
USERIALの実装と同じ。
TODO (要実行事項)
以下の機能を実装するLINKおよびSESSIONインタフェースモジュールを提供:
owAcquire - 1-Wireネットを取得。
owRelease - 以前取得した1-Wireネットを開放。
owHasOverDrive - アダプタがオーバドライブ機能を備えるかどうかを指定。
owHasPowerDelivery - アダプタが電力を供給可能かどうかを指定。
owHasProgramPulse - EPROMプログラミング電圧が利用可能かどうかを指定。
owLevel - 1-WireネットラインレベルをNormal (5Vの弱プルアップ)、Power Delivery (5Vの強プルアップ)、またはProgram Level (12VのEPROMプログラミングレベル)に設定。
owProgramPulse - EPROM 1-Wireデバイスの書込み用に、時間設定されたプログラミングパルスを送信。
owReadBitPower - 1ビットを読み取り、随意に電力を供給。
owReadByte - オール1 (0xFF)を送信して、1-Wireネットから8ビットを受信。
owSpeed - 1-Wireネットの速度をNormal (16kb)またはOverdrive (142kb)に設定。
owTouchBit* - 1-Wireネットで1ビットを送受信。
owTouchByte - 1-Wireネットで8ビットを送受信。
owTouchReset* - 1-Wireネット上の全デバイスをリセットし、結果を返す。
owWriteByte - 1-Wireネットに8ビットを送信し、受信したエコーが一致していることを確認。
owWriteBytePower - 1-Wireネットに8ビットの通信を送信し、電力を供給。 *基本操作に最低限必要な機能。
図5b. PD 「GENERAL」の実装
インストール
1-WireのPD APIはCモジュールのセットであるため、正式なインストールがありません。「構築(ビルド)」例で紹介されているように、必要なモジュールはアプリケーションに直接コンパイルされます。これは、開発者がWindows DLLなどのロード可能なライブラリにモジュールを統合することを阻むことはありません。
一部のビルドは、ネイティブの1-Wireアダプタドライバまたはこれに相当するものを必要とすることに留意してください。たいていのOSプラットフォームは組み込まれたシリアルポートドライバを持っているため、1-Wire PD APIのuserialビルドは、他のいずれのドライバも必要としません。ただし、USBとパラレルポートの1-Wireアダプタのサポートについては、ネイティブまたはクロスプラットフォームのドライバをインストールすることが必要となります。適切なドライバのダウンロードについては、オンラインで実際に利用可能な1-Wire PDキットのビルドの資料を参照してください。
Java用1-Wire API (OWAPI)の概要
Java用1-Wire APIは、Javaでの1-Wireアプリケーションの構築を目的として、最初から極めて堅牢で高度なオブジェクト指向の基盤となるように設計されています。このAPIは、移植したりクロスプラットフォームのソフトウェア開発をしたりするプログラマの能力を拡大し、1-Wireが使用された製品の製品化までの時間を短縮します。
このAPIは、多数のJavaクラスとインタフェースから構成されています。1-Wire APIのJavaクラスのひとつの特別なグループがコンテナ(クラスOneWireContainer)です。i Button を含めて特定の1-Wireデバイス用のサポートは、コンテナを通じて提供されています。このAPIは、大部分の1-Wireデバイスを代表する30を超える各種コンテナタイプを備えています。各コンテナは個々のデバイスの機能を要約し、実装します。
「コンテナ」は、物理的な1-Wireアダプタ(クラスDSPortAdapter)である1-Wireアダプタクラスを通じて1-Wireデバイスとやりとりします。アダプタのインスタンス(要求)は、プロバイダのクラス(クラスOneWireAccessProvider)から作成されます。1-Wireアダプタの実際の実装はプラットフォームによって変わりますが、すべて同じインタフェースを持っています。一部のプラットフォームではネイティブなドライバを使用していますが、大部分のプラットフォームは、少なくとも、RXTX (クロスプラットフォームのシリアルCOMポートAPI)を使用してDS9097U-XXXシリアルアダプタをサポートしています。このAPIは、RXTXのウェブサイト から入手することができます。
Java用1-Wire APIソフトウェア開発キット は、i Buttonのウェブサイトで入手することができます。1-Wire PDキットのように、OWAPIのJavaソース一式はパブリックドメイン形式のライセンスに基づいて提供されます。
図6 は、このAPIの標準的なオブジェクト生成手順を紹介しています。「プロバイダ」は、デバイスの「コンテナ」のインスタンス(要求)を順次作成可能な「アダプタ」のインスタンス(またはエニュメレーション(列挙))を作成します。これによってデバイスとの通信は、ほぼ例外なく「コンテナ」を通じて行われます。
図6. OWAPIオブジェクトの作成
図7 は、「コンテナ」の一般的な機能を紹介しています。メモリ搭載のデバイスは、各メモリバンク用にメモリバンクインスタンスを作成します。メモリは、バンクの機能セットに応じて、各バンクに分類されます。たとえば、揮発性バンクもあれば、不揮発性バンクもあります。または、バンクは汎用メモリもあれば、デバイスの機能を変更するメモリ割当ての場合もあります。
図7. OWAPI ONEWIRECONTAINERの機能
図8 は、基本OWAPIクラスで提供されたメソッドを紹介しています。クラスまたはパッケージは太字で表示しています。各コンテナは個々のデバイスタイプを操作するハイレベルなメソッドを備えているため、アダプタのLINKレベルメソッドは通常直接呼び出されないことに注意してください。
セッション
com.dalsemi.onewire.adapter.DSPortAdapter
beginExclusive - 1-Wireネットの排他的使用を取得。
endExclusive - 1-Wireネット上で排他的ロックを開放。
リンク
com.dalsemi.onewire.adapter.DSPortAdapter
canBreak - 1-Wire「ブレーク」(long low)操作がアダプタによってサポートされているかどうかを確認。
canDeliverPower - 「強プルアップ」電力供給がアダプタによってサポートされているかどうかを確認。
canDeliverSmartPower - 「スマート」電力供給がアダプタによってサポートされているかどうかを確認。「スマート」電力供給とは、電力消費の低減時を検出し、電力供給を自動停止する機能。
canFlex - フレキシブルな長距離通信タイミングがアダプタによってサポートされているかどうかを確認。
canHyperdrive - ハイパードライブ通信速度がアダプタによってサポートされているかどうかを確認。
canOverdrive - オーバドライブ通信速度がアダプタによってサポートされているかどうかを確認。
canProgram - 12V EPROMプログラミング電圧がアダプタによってサポートされているかどうかを確認。
dataBlock - 1-Wireネットに1データブロックを送受信。
getBit - 1-Wireネットから1ビットを読み取る。
getBlock - オール1 (0xFF)を送信して、1-Wireネットから1ブロックを読み取る。
getByte - オール1 (0xFF)を送信して、1-Wireネットから1バイトを読み取る。
getSpeed - 現在の1-Wire通信速度を読み取る。
putBit - 1-Wireネットに1ビットを書き込む。
putByte - 1-Wireネットに1バイトを書き込み、エコーが正しいことを確認。
reset - 1-Wireネットの全デバイスをリセット。
setPowerDuration - 電力供給時間を設定。
setPowerNormal - 電力供給を停止。
setProgramPulseDuration - プログラムパルス時間を設定。
setSpeed - 1-Wire通信速度を設定。
startBreak - 1-Wireネット上でブレーク(low)を開始。
startPowerDelivery - 電力供給を開始。
startProgramPulse - プログラムパルスを開始。
ネットワーク
com.dalsemi.onewire.adapter.DSPortAdapter
excludeFamily - 検索からファミリグループを除外。
findFirstDevice - コンテナを自動生成せずに1-Wireネット上の最初のデバイスを検出。
findNextDevice - コンテナを自動生成せずに1-Wireネット上の次のデバイスを検出。
getAllDeviceContainers - コンテナとともに1-Wireネット上のすべてのデバイスを検索および検出。
getDeviceContainer - 検出した「現行」デバイス用のデバイスコンテナを取得。
getFirstDeviceContainer - 最初のデバイスを検出し、そのコンテナを生成。
getNextDeviceContainer - 次のデバイスを検出し、そのコンテナを生成。
setNoResetSearch - 1-Wireネット検索が1-Wireリセットを送出しないように設定。
setSearchAllDevices - 1-Wireネット検索が全デバイスを含めるように設定(アラーム専用デバイスは除外)。
setSearchOnlyAlarmingDevices - 1-Wireネット検索がアラームデバイスのみを含めるように設定。
targetAllFamilies - 1-Wireネット検索が全デバイスを含めるように設定(除外なし)。
targetFamily - 1-Wireネット検索で特定のファミリグループを対象とする。
(com.dalsemi.onewire.container.* でも同様)
isAlarming - デバイスがアラーム状態にあるかどうかを確認。
isPresent - デバイスが1-Wireネット上に存在するかどうかを確認。
select - デバイス固有の操作コマンドに対応できるように、1-Wireネットデバイスを選択。
転送
com.dalsemi.onewire.container.MemoryBank
getBankDescription - メモリバンクのテキスト記述を返す。
getSize - バイトで表したメモリバンクのサイズを取得。
getStartPhysicalAddress - メモリバンクの開始物理アドレスを取得。
isGeneralPurposeMemory - メモリバンクが汎用(メモリ割当てでない)かどうかを確認。
isNonVolatile - メモリバンクが不揮発性かどうかを確認。
isReadOnly - メモリバンクが読取り専用かどうかを確認。
isReadWrite - メモリバンクが読取り/書込み可能かどうかを確認。
isWriteOnce - メモリバンクがEPROMのような追記型かどうかを確認。
needsPowerDelivery - このメモリバンクが書込みに電力供給を必要とするかどうかを確認。
needsProgramPulse - このメモリバンクが書込みにプログラムパルスを必要とするかどうかを確認。
read - 解釈なしにメモリバンクを読み取る(パケット構造なし)。
setWriteVerification - APIが書込み後に追加検証を実行するように設定。
write - メモリバンクのローを書き込む(パケット構造なし)。
com.dalsemi.onewire.container.PagedMemoryBank
getExtraInfoDescription - このバンクに関連するその他情報の記述を取得。
getExtraInfoLength - 各ページのその他情報のバイトで表した長さを取得。
getMaxPacketDataLength - このメモリバンクの各ページに収まる、「パケット」構造に収納可能なデータの最大長を取得。
getNumberPages - このメモリバンクのページ数を取得。
getPageLength - このメモリバンク内のローページの、バイトで表した長さを取得。
hasExtraInfo - このメモリバンクが各ページに関連したその他情報を保有しているかどうかを確認。
hasPageAutoCRC - このメモリバンクのページがデバイスによって提供されるCRC検証を備えているかどうかを確認。
readPage - メモリバンクから1ページを読み取る。
readPageCRC - デバイスが生成するCRCを利用して、メモリバンクから1ページを読み取る。
readPagePacket - メモリバンクの1ページからパケット構造を読み取る。
writePagePacket - メモリバンクの1ページにパケット構造を書き込む。
com.dalsemi.onewire.container.OTPMemoryBank
canLockPage - メモリバンクのページは追加書き込みの防止が可能かどうかを確認。
canLockRedirectPage - 追記型ページの更新方法として、メモリバンクはリダイレクトされたページを持てるかどうかを確認。
canRedirectPage - 追加リダイレクト防止のため、メモリバンクのリダイレクト機能をロック可能かどうかを確認。
getRedirectedPage - ページのリダイレクト先のページ番号を取得。
isPageLocked - 追加書込みをすることができないようにページがロックされているかどうかを確認。
isRedirectPageLocked - 追加リダイレクトすることができないようにページがロックされているかどうかを確認。
lockPage - ページをロック。
lockRedirectPage - リダイレクトされないようにページをロック。
redirectPage - ページを新規ページにリダイレクト。これは追記型デバイスの更新に使用。
ファイル
com.dalsemi.onewire.utils.OWFile
java.io.File (JDKのバージョン1.2用)と同じメソッドで、以下の追加メソッドを含みます。
close - ファイルを閉じ、このファイルに関連するリソースを開放。
format - このOWFileに規定されたデバイスに関連する1-Wire File Systemをフォーマット。
getFD - このファイルがデバイスと同期することができるように、ファイルのOWFileDescriptorを取得。
getFreeMemory - 1-Wire File System内の利用可能な空きメモリを取得。
getLocalPage - 1-Wire File Systemのページからメモリバンクのローカルページのリファレンスを取得。
getMemoryBankForPage - 提供された1-Wire File Systemのページの読取り/書込みに使用可能なメモリバンクインスタンスを取得。
getOneWireContainer - ファイルシステムを構成するコンテナを取得。
getPageList - ファイルを構成している1-Wire File Systemのページのリストを取得。
com.dalsemi.onewire.utils.OWFileDescriptor
java.io.FileDescriptor (JDKのバージョン1.2用)と同じメソッド。
com.dalsemi.onewire.utils.OWFileOutputStream
java.io.FileOutputStream (JDKのバージョン1.2用)と同じメソッド。
com.dalsemi.onewire.utils.OWFileInputStream
java.io.FileInputStream (JDKのバージョン1.2用)と同じメソッド。
デバイス
com.dalsemi.onewire.container.*
6種類の「センサ」タイプのインタフェースを含めて、30を超える各種デバイス固有のコンテナの実装。
ADContainer - アナログ-ディジタルコンバータ
ClockContainer - クロック
SwitchContainer - スイッチ
TemperatureContainer - 温度センサ
PotentiometerContainer - ディジタルポテンショメータ
HumidityContainer - 湿度センサ
MissionContainer - 温度と湿度ロガーのミッション用
OneWireSensor - 1-Wireセンサ
PasswordContainer - パスワードで保護されたメモリ
com.dalsemi.onewire.application.*
SHAおよび1-Wireタグ付けユーティリティクラス
*基本操作に最低限必要な機能。
図8. OWAPIの機能
下記の例2 は、図3で概説したAPIの使用法フローにしたがったOWAPIコード部分を紹介しています。例1のPDコード例と同様、ワークループを通過するごとに1-Wireネットワーク上の各デバイスが検出され、より高度なアプリケーションであれば、1つのデバイスタイプだけ、あるいは以前の検索で発見されたデバイスを検出することができます。
boolean doing_work=true;
// get the default adapter from the service provider
DSPortAdapter adapter = OneWireAccessProvider.getDefaultAdapter();
// work loop
while (doing_work)
{
// get exclusive use of adapter (SESSION)
adapter.beginExclusive(true);
// clear any previous search restrictions (NETWORK)
adapter.setSearchAllDevices();
adapter.targetAllFamilies();
adapter.setSpeed(adapter.SPEED_REGULAR);
// enumerate through all the 1-Wire devices found (NETWORK)
for (Enumeration owd_enum = adapter.getAllDeviceContainers();
owd_enum.hasMoreElements(); )
{
// get a 'container' for each device
OneWireContainer owd = ( OneWireContainer ) owd_enum.nextElement();
// do SOMETHING with device found (TRANSPORT/FILE/DEVICE)
// . . .
}
// end exclusive use of adapter (SESSION)
adapter.endExclusive();
// do other application work
// . . .
}
例2. OWAPIのコード例
1-Wireのタグ付け
1-Wireセンサが増加して多種多様になるにつれて、1-Wireネットワークの管理が次第に困難になります。たとえば、ADCのようなセンサは各種数値を測定することができるため、センサの機能を規定するためにセンサにタグ付けできることが重要になります。XMLによる1-Wireのタグ付け機構が作成され、Java用の1-Wire APIに実装されています。これらのタグは、アプリケーションが動的にロードし、センサを環境に適合させることができるようにします。詳細については、アプリケーションノート158 「1-Wire Tagging with XML (XMLによる1-Wireのタグ付け) 」を参照してください。
インストール
図8に記載されているAPI呼び出しを構成する必須モジュールのすべては、単一のjarファイルであるOneWireAPI.jarにあります。この単一のモジュールを適切な場所またはクラスパスに配置すると、API全体が提供されます。ただし、以下のようなよく知られた2つの例外があります。すなわち、特定のプラットフォームにインストールされる必要があるネイティブまたは通信APIがあるということ、あるいはプラットフォームにはサイズ制限があるため、API全体を有効にすることは好ましくないということです。こうした2つの例外は、OWAPIキットで詳細に考察されます。
1-Wire .NET (OW.NET)の概要
あらゆる目的や用途に応えるため、ここで提供する.NETサポートは、MicrosoftのJ#言語だけでコンパイルされるJava用1-Wire APIです。すべての.NET 1-Wireアプリケーションは、OneWire.NET.dllへの参照のみを必要とします。これは、C#、J#、およびVB.NETなどのような最新の.NET言語のサポートも含んでいます。1-Wire .NETの例については、i Buttonのウェブサイトで該当するソフトウェア開発キット(SDK)をダウンロード して参照してください。
1-Wireアプリケーションが正しく動作するためには、OneWire.NET.dllは、次の再配布可能なモジュールもPCにインストールされている必要があることを忘れないでください。
ネイティブな1-Wireポートアダプタのデバイスドライバ。これらは1-Wireドライバと呼ばれ、i Buttonのウェブサイトからダウンロード することができます。
Microsoft .NET 2.0のフレームワーク
Visual J# .NET 2.0再配布可能モジュール
Pocket PC、パーソナルディジタルアシスタンス(PDA)、携帯電話、およびセットトップボックスなどのデバイス用としてCompact .NETフレームワークの1-Wireが必要な場合には、OneWire.NET.dllの新しいリンク層(専用)バージョンが利用可能です。これは、すべてがC#で記述されています。現時点では、OneWireContainersは記述されていませんが、DSPortAdapterクラスは利用可能です。詳細については、Windows用1-Wire SDK (English only)を参照してください。
OW.NET APIはTMEX APIも備えた1-Wireドライバパッケージで提供されています。1-Wireドライバのカスタムインストールの作成方法の詳細についてはアプリケーションノート1740 「White Paper 6: 1-Wire Drivers Installation Guide for Windows (白書6:Windows用1-Wireドライバインストールガイド)」を参照してください。
1-Wire .NET Compact (OW.NET Compact)の概要
このオブジェクトのインタフェースは1-Wire .NET (OW.NET)と同一ですが、セッション、リンクおよびネットワーク層のみが実装されています。オブジェクトは公式な頒布インストールを備えていませんが、その代わりにシングルDLL (OneWireLinkLayer.dll)です。このオブジェクトは32および64ビットWindowsプラットフォームでTMEX APIと直接通信します。DLLファイルは2.0 .NETアプリケーションとともに付属可能で低レベル1-Wireサポートを実現します。このオブジェクトはC#で書かれたもので、J# 2.0 .NET再頒布パッケージが不要です。
TMEX API (TMEX)の概要
TMEX APIは、メモリデバイスの限定された1-Wire File Structureサポートを含めて、全1-Wireデバイスに基本機能を提供する言語非依存のWindows 32ビットDLLセットです。このAPIは、同じ1-Wireポートまたは異なる1-Wireポートで全面的に競合する多重プロセスのマルチスレッドアプリケーションで機能するように設計されています。このAPIは、それぞれ16個の別個のポートとともに、最大16種類の1-Wireアダプタをサポートすることができます。これはマキシム製のすべての1-Wireアダプタをサポートします。
このAPIの最低レベル(最低レベルのデバイス-ドライバ層)は、Windowsプラットフォーム上でJava用1-Wire API用の「ネイティブ」ドライバとして使用します(1-Wireドライバ)。1-Wire .NET APIは、Java用の1-Wire APIにも基づいているため、Windowsプラットフォーム上でも使用することができます。図9 は、TMEX APIが提供するネイティブサポートの利点をその他のAPIが利用する方法を図示しています。実ドライバファイル名およびその階層化方法がこの図に紹介されています。
1-Wireドライバのインストールパッケージ (TMEX APIおよびOW.NETライブラリを含む)、およびTMEX (および付随するAPI)にリンクされた多くのプログラム例を含むソフトウェア開発者キット のどちらも、マキシムのウェブサイトで入手可能です。
TMEX SDKで提供されているすべての例はソースコードを備えていますが、ローレベルのドライバのソースコードは現在提供されていません。ただし、こうしたドライバは無制限に再配布可能です。
表6 は、各アダプタの機能とともに、現在サポート中の1-Wireアダプタを紹介しています。
表6. サポート対象のTMEXアダプタ
Adapter
Port
Features
DS9490R, DS9490B
USB
Power delivery overdrive RJ-11 or i Button holder DS2401 ID
DS1410E¹
Parallel
Power delivery overdrive dual i Button holder DS2401 ID
DS1410D¹
Parallel legacy
Dual i Button holder DS2401 ID
DS9097U-009
Serial
Power delivery overdrive RJ-11 connector DS2502 ID
DS9097U-S09
Serial
Power delivery overdrive RJ-11 connector
DS9097U-E25
Serial
Power delivery overdrive RJ-11 connector EPROM write
DS1411
Serial
Power delivery overdrive single i Button holder
DS9097E¹
Serial legacy
RJ-11 connector EPROM write
DS9097¹
Serial legacy
RJ-11 connector
DS1413¹
Serial legacy
Single i Button holder
¹これらのアダプタは新規設計用に推奨されていません。
TMEXによってサポートされているWindowsプラットフォーム
これらのMicrosoft WindowsプラットフォームはTMEXによってサポートされています:Windows 2008、Windows 2003、Windows Vista、およびWindows XP SP2。これにはx86 (32ビット)およびx64 (64ビット)両方のオペレーティングシステムバージョンが含まれています。Windowsの初期オペレーティングシステムバージョンのドライバが必要な場合は旧バージョンのTMEXが、積極的にサポートされていませんが、マキシムのウェブサイトで入手可能であることに注意してください。(TMEX APIライブラリをインストールする) 1-Wireドライバの4.00以下のバージョンをダウンロードしてください。1-Wireドライバのインストールパッケージはここから:i Button:Windows用1-Wireドライバ
図9. TMEX APIドライバおよび他のAPIの接続性
図10 は、TMEX API提供の機能を紹介しています。このAPIは非メモリデバイス固有の機能を提供していないことに注意してください。
セッション
TMEndSession - 1-Wireネットを放棄。
TMExtendedStartSession - 1-Wireネットの排他的使用を要求。
TMValidSession - 現行の1-Wireネットセッションが有効かどうかを確認。
リンク
TMClose - 開いているポートのリソースを開放(常時使用可能ではない)。
TMOneWireCom - 1-Wireネットの速度をNormal (16kb)またはOverdrive (142kb)に設定。
TMOneWireLevel - 1-WireネットラインレベルをNormal (5Vの弱プルアップ)、Power Delivery (5Vの強プルアップ)、またはProgram Level (12VのEPROMプログラミングレベル)に設定。
TMProgramPulse - EPROMプログラミング用に、時間設定されたプログラミングパルスを1-Wireネットに送信。
TMSetup - ポートおよびアダプタが機能しているかどうかを確認し、検証。
TMTouchBit - 1-Wireネットで1ビットを送受信。
TMTouchByte - 1-Wireネットで1バイトを送受信。
TMTouchReset - 1-Wireネット上の全デバイスをリセットし、結果を返す。
ネットワーク
TMAccess - 現行デバイスを選択し、デバイス固有のコマンドに対して準備をさせる。
TMAutoOverDrive - デバイスが自動的にオーバドライブ速度の切り替えができるようにドライバを設定。
TMFamilySearchSetup - 次の検索(TMNextまたはTMNextAlarm)で指定されたファミリタイプを検出するために現行の検索状態を設定。
TMFirst - 1-Wireネット上の「最初の」1-Wireデバイスを検出するために検索。
TMFirstAlarm - 1-Wireネット上の「最初の」警報を発生している1-Wireデバイスを検出するために検索。
TMNext - 1-Wireネット上の「次の」1-Wireデバイスを検出するために検索。
TMNextAlarm - 1-Wireネット上の「次の」警報を発生している1-Wireデバイスを検出するために検索。
TMOverAccess - 現行デバイスを選択し、Overdrive速度に設定。
TMRom - 現在選択中のデバイスの登録番号(ROM番号)を回収、または設定。
TMSkipFamily - 最後の検索で検出されたすべてのファミリタイプをキップ。
TMStrongAccess - 現行デバイスを選択し、現行デバイスが存在していることを検証。
TMStrongAlarmAccess - 現行デバイスを選択し、現行デバイスが存在して警報を出していないかを検証。
転送
TMBlockIO - 1-Wireリセットに先行して1-Wireネットに1データブロックを送受信。
TMBlockStream - 1-Wireリセットなしで1-Wireネットに1データブロックを送受信。
TMExtendedReadPage - デバイス生成CRC検査付きのメモリバンクの1ページ全体を読み取る(全デバイスタイプに該当せず)。
TMProgramByte - EPROMベースの1-Wireデバイスに1バイトをプログラミング。
TMReadPacket - ページからUniversal Data Packetを読み取る(Universal Data Packet 構造の説明については、アプリケーションノート114 「1-Wire File Structure (1-Wireファイル構造) 」を参照)。
TMWritePacket - ページにUniversal Data Packetを書き込む。
ファイル
TMAttribute - ファイルまたはディレクトリの属性を変更。
TMChangeDirectory - 現在の作業ディレクトリの読取りや変更を行う。
TMCloseFile - ファイルハンドルを解放するために開いたファイルや作成したファイルを閉じる。
TMCreateFile - 書込み用にファイルを作成。
TMCreateProgramJob - EPROMプログラミング保留ジョブのロギング用書込みバッファを作成。
TMDeleteFile - ファイルを削除。
TMDirectoryMR - サブディレクトリを作成または削除。
TMDoProgramJob - EPROMプログラミング保留ジョブを書き込む。
TMFirstFile - 現在のディレクトリの最初のファイルを検出。
TMFormat - 1-Wireファイル構造ファイルシステムをフォーマット。
TMNextFile - 現在のディレクトリ内の次のファイルを検出。
TMOpenFile - 読取り用にファイルを開く。
TMReadFile - 開いたファイルを読み取る。
TMReNameFile - ファイルやディレクトリの名前を変更。
TMTerminateAddFile - 「AddFile」を終了。 「AddFile」は、上書きせずに追加可能なEPROMデバイス上の特殊ファイルタイプです。
TMWriteAddFile - EPROMデバイス上に「AddFile」を追加、または変更。
TMWriteFile - 作成されたファイルに書き込む。
デバイス
なし
その他
TMGetTypeVersion - アダプタドライバ用のバージョン情報を取得。
Get_Version - 全ドライババージョンを取得。
図10. TMEX API機能.
例4 は、図3で概説したAPIの使用法フローにしたがったTMEXコード部分を紹介しています。先の3つの例と同様、簡単なプロセスはワークループを通過するごとに1-Wireネットワーク上の各デバイスを検出するようにしており、より高度なアプリケーションであれば、1つのデバイスタイプだけを検出したり、以前の検索で検出されたデバイスを選択したりすることができます。
int PortNum, PortType; // port number and type set for adapter present
long session_handle; // session handle
unsigned char state_buffer[5120];
int doing_work=1, did_setup=0;
short rslt;
// work loop
while (doing_work)
{
// aquire the 1-Wire Net (SESSION)
session_handle = TMExtendedStartSession(PortNum,PortType,NULL);
if (session_handle > 0)
{
// check to see if TMSetup has been done once
if (!did_setup)
{
if (TMSetup(session_handle) == 1)
did_setup = 1;
else
{
// error setting up port, adapter may not be present
// . . .
}
}
else
{
// find all devices (NETWORK)
rslt = TMFirst(session_handle, state_buf);
while (rslt > 0)
{
// do SOMETHING with device found (TRANSPORT/FILE/DEVICE)
// . . .
// find the next device (NETWORK)
rslt = TMNext(session_handle, state_buf);
}
}
// release the 1-Wire Net (SESSION)
TMEndSession(session_handle);
}
else
{
// Could not acquire 1-Wire network
// . . .
}
// do other application work
// . . .
}
例4. TMEX 「C」コードの例
インストール
TMEX APIは、前述の1-Wireドライバのインストールパッケージ(OW.NET APIライブラリもインストール)でインストールすることができます。これはMicrosoftのインストーラパッケージであり、サポート対象のあらゆる1-WireアダプタについてWindowsのドライバとレジストリキーのすべてをロードします。ドライバとAPIファイル(インストールなし)は、カスタムインストール用に自由にオンラインで入手することが可能です。OneWireViewerは、ほとんどの1-Wireデバイスとi Buttonデバイスを実行し1-Wireドライバでインストールされるデモプログラムです。
1-WireドライバとOneWireViewerデモの追加情報については、i Buttonのウェブサイト の「ソフトウェアリソース」下にあります。
その他ツール
このドキュメントで取り上げたAPIは、1-Wireデバイスとの通信に利用可能なリソースの大部分を説明していますが、決して唯一のリソースではありません。このセクションでは、その他の利用可能なリソースを概説しています。
ソフトウェア認可API
ソフトウェア認可とは、ハードウェアトークンの存在を必要とするソフトウェアアプリケーションの単なるロックです。この場合のトークンは、ユーザのワークステーションに接続されたi Buttonです。アプリケーションは、その実行前にi Buttonの存在と妥当性を照会します。これは、アプリケーションの実行中にも連続して問い合わせることができます。実際には、このドキュメントで概説されるどのAPIもこうしたアプリケーション用に使用することができますが、考慮すべき特定の問題があります。ユーザがドライバを交換し、ロックを無効にすることができるため、外部ドライバのセキュリティが脅かされます。1-Wire PDキット上で構築されたソフトウェア認可APIは、特にこうしたアプリケーション用に開発され、外部ドライバの代わりにリンク可能なモジュールを備えています。
ソフトウェア認可APIの設計は、最も簡単に使用することができるという点に重点を置いており、ソフトウェアプログラマの既存のコードに簡単に統合することができるようにしています。次の3つの主要なサービスがAPIによって提供されています。
1-Wireデバイスの初期化
デバイスの認証
デバイスの消去(これによってシステムの有効な要素ではなくなる)
1-Wireソフトウェア認可キット の情報は、i Buttonのウェブサイトにあります。
検索エンジンのソフトウェア例
マキシムは、この解説書で述べたAPIを実証する1-Wireのソフトウェアアプリケーション例を継続的に開発しています。SDK に含まれていない例は、オンラインのソフトウェア例の検索エンジン を利用して見つけることができます。これらの例の多くは (ソースコードを含めて) 、関連するSDKに追加されるまえに最初に検索エンジンに(個別のダウンロードとして)追加されます。検索エンジンは、以下の項目別にソフトウェア例を検索することができます。
1-Wireデバイス(Thermochron、SHA i Buttonなど)
プラットフォーム(Win32、Linux、TINIなど)
API (TMEX、1-Wireパブリックドメイン、1-Wire .NETなど)
プログラミング言語(C、Java、C#、Visual Basic、Delphiなど)
検索結果 の内容は、プログラムの説明と該当するダウンロードのリンクです。
サードパーティ
多くのサードパーティ製のソフトウェアは1-Wireデバイス用に利用することができます。その一部は、ソリューションとともに購入可能な、マキシム認定のソリューション開発者(ASD)が作成したアプリケーションです。SourceForge.net などのパブリックフォーラムに関するオープンソースプロジェクトはもちろんのこと、ASDおよびソリューションロケータのリスト一式 は、i Buttonのサイトにあります。
終わりに
この解説書は、すべての1-Wire APIの特徴に関する概要を紹介してきました。また、サポートプラットフォームやプログラミング言語などを含めて、数種類のAPIについても詳述してきました。各デバイスタイプのAPIの適用範囲を紹介する早見表によって、使用するAPIの選択が容易になりました。適切なAPIを入手すると、1-Wire利用のアプリケーションを容易に設計することができます。
1-WireはMaxim Integrated Products, Inc.の登録商標です。
i ButtonはMaxim Integrated Products, Inc.の登録商標です。
HygrochronはMaxim Integrated Products, Inc.の商標です。
JavaはSun Microsystems, Inc.の商標です。
LinuxはLinus Torvaldsの登録商標です。
MicroLANはMaxim Integrated Products, Inc.の商標です。
ThermochronはMaxim Integrated Products, Inc.の登録商標です。
TINIはMaxim Integrated Products, Inc.の登録商標です。
UNIXはThe Open Groupの登録商標です。
Visual J#はMicrosoft Corp.の登録商標です。
Windows VistaはMicrosoft Corp.の登録商標です。
WindowsはMicrosoft Corp.の登録商標です。
関連製品
APP 155: Aug 08, 2002
DS1425
マルチi Button
フルデータシート (PDF, 784kB)
DS1904
RTC i Button
フルデータシート (PDF, 284kB)
無料サンプル
DS1920
温度用i Button®
フルデータシート (PDF, 496kB)
DS1921G
Thermochron i Button
フルデータシート (PDF, 632kB)
DS1921H
高分解能Thermochron i Button、温度範囲H:+15℃~+46℃、Z:-5℃~+26℃
フルデータシート (PDF, 636kB)
DS1921Z
高分解能Thermochron i Button、温度範囲H:+15℃~+46℃、Z:-5℃~+26℃
フルデータシート (PDF, 636kB)
DS1922L
8KBデータログメモリ付き、温度ロガーi Button
フルデータシート (PDF, 676kB)
DS1922T
8KBデータログメモリ付き、温度ロガーi Button
フルデータシート (PDF, 676kB)
DS1923
8KBデータログメモリ付き、Hygrochron温度/湿度ロガーi Button
フルデータシート (PDF, 448kB)
DS1963L
4kビットマネタリi Button
フルデータシート (PDF, 828kB)
DS1963S
SHA i Button
DS1971
256ビットEEPROM i Button®
フルデータシート (PDF, 264kB)
無料サンプル
DS1973
4Kb EEPROM i Button®
フルデータシート (PDF, 88kB)
無料サンプル
DS1977
パスワード保護、32KB EEPROM i Button
フルデータシート (PDF, 484kB)
DS1982
1Kbアドオンリーi Button®
フルデータシート (PDF, 492kB)
無料サンプル
DS1985
16Kbアドオンリーi Button®
フルデータシート (PDF, 500kB)
無料サンプル
DS1986
64Kbアドオンリーi Button®
フルデータシート (PDF, 780kB)
DS1990A
シリアルナンバーi Button
フルデータシート (PDF, 140kB)
無料サンプル
DS1990R
シリアル番号i Button
フルデータシート (PDF, 316kB)
無料サンプル
DS1991
MultiKey i Button
フルデータシート (PDF, 604kB)
DS1992
1Kb/4Kbメモリi Button®
フルデータシート (PDF, 364kB)
無料サンプル
DS1993
1Kb/4Kbメモリi Button®
フルデータシート (PDF, 364kB)
無料サンプル
DS1994
4Kbプラスタイムメモリi Button®
フルデータシート (PDF, 732kB)
DS1995
16Kビットメモリi Button®
フルデータシート (PDF, 48kB)
DS1996
64kビットメモリi Button®
フルデータシート (PDF, 348kB)
DS2401
シリコンシリアルナンバー
フルデータシート (PDF, 288kB)
無料サンプル
DS2404
EconoRAMタイムチップ
フルデータシート (PDF, 1.5MB)
DS2405
アドレス指定可能なスイッチ
フルデータシート (PDF, 436kB)
DS2406
1Kbメモリ付き、デュアル、アドレス指定可能なスイッチ
フルデータシート (PDF, 264kB)
無料サンプル
DS2407
デュアル、アドレス指定可能スイッチプラス1kbメモリ
フルデータシート (PDF, 1.2MB)
DS2408
1-Wire、8チャネル、アドレス指定可能なスイッチ
フルデータシート (PDF, 424kB)
無料サンプル
DS2409
MicroLANカプラ
フルデータシート (PDF, 428kB)
DS2411
VCC 入力付き、シリコンシリアルナンバ
フルデータシート (PDF, 192kB)
無料サンプル
DS2413
1-Wire、デュアルチャネル、アドレス指定可能なスイッチ
フルデータシート (PDF, 184kB)
無料サンプル
DS2415
1-Wireタイムチップ
フルデータシート (PDF, 256kB)
DS2417
割込み付き、1-Wireタイムチップ
フルデータシート (PDF, 168kB)
無料サンプル
DS2422
8KBデータログメモリ付き、1-Wire®温度/データロガー
フルデータシート (PDF, 664kB)
DS2423
カウンタ付き、4kビット1-Wire RAM
フルデータシート (PDF, 588kB)
DS2430A
256ビット1-Wire EEPROM
フルデータシート (PDF, 240kB)
DS2431
1024ビット、1-Wire EEPROM
フルデータシート (PDF, 712kB)
無料サンプル
DS2432
SHA-1エンジン内蔵、1Kb保護1-Wire EEPROM
要約版データシート (PDF, 164kB, English only)
DS2433
4Kb、1-Wire EEPROM
フルデータシート (PDF, 568kB)
無料サンプル
DS2450
1-WireクワッドA/Dコンバータ
フルデータシート (PDF, 360kB)
無料サンプル
DS2502
1Kbアドオンリーメモリ
フルデータシート (PDF, 540kB)
無料サンプル
DS2505
16Kbアドオンリーメモリ
フルデータシート (PDF, 320kB)
無料サンプル
DS2506
64Kbアドオンリーメモリ
フルデータシート (PDF, 900kB)
DS2890
1-Wireディジタルポテンショメータ
フルデータシート (PDF, 976kB)
DS28E04-100
PIO付き、4096ビットアドレス指定可能1-Wire EEPROM
フルデータシート (PDF, 312kB)
無料サンプル
自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。