概要
セルイメージ(「, 」区切り)で構成されたCSVファイルから、セル単位で読み込み、ワードアドレスに書き込みます。
書式
_CF_read_csv / _SD_read_csv / _USB_read_csv (フォルダ名, ファイル名, 書き込み先アドレス, 開始行,読込み行数)
パラメータ1 : 文字列(最大文字数は半角32文字)
パラメータ2 : 文字列(最大文字数は半角32文字)、内部デバイス(最大文字数は半角14文字)、オフセット指定付デバイス(内部デバイス)(内部アドレス+テンポラリアドレス、最大文字数は半角14文字)
パラメータ3 : 内部デバイス、オフセット指定付デバイス(内部デバイス)
パラメータ4 : 数値(1~65535)、内部デバイス、テンポラリ変数
パラメータ5 : 数値(1~65535)、内部デバイス、テンポラリ変数
記述例
_CF_read_csv ("\CSV", "SAMPLE.CSV", [w:[#INTERNAL]LS1000], 1, 2)
(CFカード内の「\CSV\SAMPLE.CSV」ファイルの1 行目から2 行分を_CF_read_csv ( )関数で読み込む場合)
SAMPLE.CSV
CSVファイルの1行目から2行分を読み込みます。1文字目が数値(「0」~「9」、「-」、「+」)の場合、数値として格納されます。1文字目が「”」の場合、文字として扱われ、文字列の末尾には「00h」が格納されます。例えば、”DAT01-01”を格納する場合、8文字の偶数であるため文字列の格納に4ワードと末尾00hを格納する1ワードで5ワード使用されます。
”DAT01-2”を格納する場合、7文字の奇数であるため文字列の格納に4ワード使用し、最後に00hが格納されます。
セルの1文字目が数値(「0」~「9」、「-」、「+」)の場合、数値データに変換し内部デバイスに書き込みを行います。数値データの有効範囲は-32768 ~ 32767です。
セルの1文字目が「"」の場合、「"」で囲まれた範囲を文字列データとして内部デバイスに書き込みを行います。文字列データが奇数バイトの場合、最後に0x00が書き込まれ、文字列データが偶数バイトの場合、最終アドレスの次のアドレスに0x0000が書き込まれます。
CSVファイル内に複数行がある場合、特定の行から任意の行までのデータを読み出すことができます。
CSVファイルから読み出せるデータ量は、1セルあたり半角200文字分まで、1行あたり640ワード分までです。
エラーが発生した場合、LS9137(USBストレージはLS9143)にエラーステータスを書き出します。
エラーステータス
エディタ関数名 |
LSエリア |
エラーステータス |
要因 |
---|---|---|---|
_CF_read_csv( ) / _SD_read_csv( ) / _USB_read_csv( ) |
LS9137/ |
0000h |
正常終了 |
0001h |
パラメータエラー |
||
0002h |
外部ストレージエラー 外部ストレージなし/ファイルオープンエラー/ファイルリードエラー |
||
0003h |
書き込み、読み込みエラー |
CSVファイルの文字列データを内部デバイスに書き込む場合、格納順序はデータ格納モードに依存します。データの格納順序については以下を参照してください。
22.10.7 データ格納モードについて
フォルダ名に「"*"」を指定すると、ファイル名にフルパスを指定できます。
ファイル名は、8.3フォーマット(ファイル名8文字、拡張子3文字の最大12文字)のみ使用できます。12文字を超えるファイル名は使用できません。
ルートフォルダ(ディレクトリ)を指定する場合には、フォルダ名に“”(空文字列)を指定してください。
第1パラメータのフォルダ名の最大文字数は、半角32文字までです。
第2パラメータのファイル名には、フォルダ名を付加して指定することが可能です。第2パラメータのフォルダ名+ファイル名の最大文字数は、半角32文字までです。
例 : \DATA\01\DATA.bin
第2パラメータのファイル名には、内部デバイスが指定可能です。内部デバイスを指定することにより間接的にファイル名を指定できます。ただし、内部デバイス指定時はフォルダ名+ファイル名の文字数は最大半角14文字までに制限されます。
ファイル名に内部デバイスを指定した場合、ファイル名の格納順序は文字列データモードに従います。
7.9.1 システム設定[接続機器設定]の設定ガイド
CSVファイルから読み込んだデータを格納できる内部デバイスの有効範囲はユーザエリア(LS20~LS2031、LS2096~LS8191)のみです。
読み込みに必要な処理時間は、読み込まれるCSVファイルのデータ量に比例します。また、処理が完了するまで、部品処理は更新されません。(1行あたり40文字、100行を使用したCSVファイルの先頭から100行目まで読み込む場合、約10秒かかります)
「_CF_read( ) / _SD_read( ) / _USB_read( )」関数と異なり、関数実行後に[s:CF_ERR_STAT]/[s:SD_ERR_STAT]/[s:USB_ERR_STAT]にステータスは格納されません。(不定値が格納される場合があります)
数字で始まる文字列には、必ず["]を文字列の最初と最後に入れてください。
(例)
[ 123, 2-D4EA ] |
[ 123, "2-D4EA" ] |
X |
O |